Part Number Hot Search : 
KK4518BD T145471J IDT72V FDD5N50F D100L GRM31CR7 4545000 GBLA02
Product Description
Full Text Search
 

To Download TMP88F846UG Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  8 bit microcontroller tlcs-870/x series TMP88F846UG
? 2009 toshiba corporation all rights reserved
revision history date revision 2008/2/8 1 first release 2009/9/3 2 contents revised

table of contents TMP88F846UG 1.1 features...................................................................................................................................... 1 1.2 pin assignment.......................................................................................................................... 3 1.3 block diagram........................................................................................................................... 4 1.4 pin names and functions.......................................................................................................... 5 2. functional description 2.1 functions of the cpu core........................................................................................................ 9 2.1.1 memory address map......................................................................................................................................................... 9 2.1.2 program memory (rom).................................................................................................................................................. 10 2.1.3 data memory (ram)........................................................................................................................................................ 10 2.1.4 system clock control circuit............................................................................................................................................ 11 2.1.4.1 on-chip oscillator 2.1.4.2 timing generator 2.1.4.3 standby control circuit 2.1.4.4 controlling operation modes 2.1.5 reset circuit...................................................................................................................................................................... 23 2.1.5.1 external reset input 2.1.5.2 address trap reset 2.1.5.3 watchdog timer reset 2.1.5.4 system clock reset 2.1.5.5 voltage detection reset 2.1.5.6 power-on reset 2.1.5.7 trimming data reset 3. interrupt control circuit 3.1 interrupt latches (il39 to il2) ................................................................................................ 28 3.2 interrupt enable register (eir) ................................................................................................ 29 3.2.1 interrupt master enable flag (imf) ................................................................................................................................... 29 3.2.2 individual interrupt enable flags (ef39 to ef3) ............................................................................................................... 29 3.3 interrupt sequence ................................................................................................................. 32 3.3.1 interrupt acceptance processing is packaged as follows. .................................................................................................. 32 3.3.2 saving/restoring general-purpose registers ....................................................................................................................... 33 3.3.2.1 using automatic register bank switching 3.3.2.2 using register bank switching 3.3.2.3 using push and pop instructions 3.3.2.4 using data transfer instructions 3.3.3 interrupt return .................................................................................................................................................................. 35 3.4 software interrupt (intsw) ................................................................................................... 36 3.4.1 address error detection ..................................................................................................................................................... 36 3.4.2 debugging ......................................................................................................................................................................... 36 3.5 external interrupts .................................................................................................................. 37 4. special function register 4.1 sfr.......................................................................................................................................... 39 i
4.2 dbr......................................................................................................................................... 41 5. input/output ports 5.1 port p1 (p15 to p10)................................................................................................................ 45 5.2 port p2 (p22 to p20)................................................................................................................ 46 5.3 port p3 (p37 to p30) ............................................................................................................... 47 5.4 port p4 (p47 to p40)................................................................................................................ 48 5.5 port p6 (p67 to p60) ............................................................................................................... 49 6. power-on reset circuit 6.1 configuration .......................................................................................................................... 51 6.2 function.................................................................................................................................... 51 7. voltage detection circuit (vltd) 7.1 configuration........................................................................................................................... 53 7.2 control..................................................................................................................................... 54 7.3 function................................................................................................................................... 55 7.3.1 enabling/disabling voltage detection operation............................................................................................................. 55 7.3.2 selecting the voltage detect operating mode.................................................................................................................. 55 7.3.3 detection voltage level section.......................................................................................................................................... 56 7.3.4 voltage detection flag and voltage detection status flag................................................................................................... 56 7.4 setting of register.....................................................................................................................57 7.4.1 setting procedure for generate an interrupt...................................................................................................................... 57 7.4.2 setting procedure to generate a reset ................................................................................................................................ 58 8. time base timer (tbt) and divider output ( dvo) 8.1 time base timer..................................................................................................................... 59 8.2 divider output (dvo).............................................................................................................61 9. watchdog timer (wdt) 9.1 watchdog timer configuration ..............................................................................................63 9.2 watchdog timer control ........................................................................................................ 64 9.2.1 malfunction detection methods using the watchdog timer .......................................................................................... 64 9.2.2 watchdog timer enable ................................................................................................................................................... 65 9.2.3 watchdog timer disable .................................................................................................................................................. 66 9.2.4 watchdog timer interrupt (intwdt) ............................................................................................................................. 66 9.2.5 watchdog timer reset ..................................................................................................................................................... 67 10. 16-bit timercounter 1 (tc1) 10.1 configuration ........................................................................................................................ 69 10.2 timercounter control........................................................................................................... 69 ii
10.3 function................................................................................................................................. 72 10.3.1 timer mode......................................................................................................................................................................72 10.3.2 external trigger timer mode.......................................................................................................................................... 74 10.3.3 event counter mode........................................................................................................................................................ 76 10.3.4 window mode................................................................................................................................................................. 77 10.3.5 pulse width measurement mode.....................................................................................................................................78 10.3.6 programmable pulse generate (ppg) output mode....................................................................................................... 81 11. 16-bit timer (ctc) 11.1 configuration......................................................................................................................... 83 11.2 control................................................................................................................................... 84 11.3 function................................................................................................................................. 87 11.3.1 timer mode with software start....................................................................................................................................... 87 11.3.2 timer mode with external trigger start............................................................................................................................ 88 11.3.3 event counter mode......................................................................................................................................................... 89 11.3.4 programmable pulse generate (ppg) output mode.........................................................................................................90 12. 8-bit timercounter 3 (tc3) 12.1 configuration ........................................................................................................................ 95 12.2 timercounter control .......................................................................................................... 96 12.3 function ................................................................................................................................ 97 12.3.1 timer mode ..................................................................................................................................................................... 97 12.3.2 event counter mode ....................................................................................................................................................... 99 12.3.3 capture mode................................................................................................................................................................ 100 13. 8-bit timercounter 4 (tc4) 13.1 configuration ...................................................................................................................... 101 13.2 timercounter control ........................................................................................................ 102 13.3 function............................................................................................................................... 103 13.3.1 timer mode................................................................................................................................................................... 103 13.3.2 event counter mode ..................................................................................................................................................... 103 13.3.3 programmable divider output (pdo) mode................................................................................................................. 103 13.3.4 pulse width modulation (pwm) output mode............................................................................................................ 104 14. motor control circuit (pmd: programmable motor driver) 14.1 outline of motor control..................................................................................................... 108 14.2 configuration of the motor control circuit........................................................................ 110 14.3 position detection unit........................................................................................................ 111 14.3.1 configuration of the position detection unit.................................................................................................................. 112 14.3.2 position detection circuit register functions............................................................................................................... 113 14.3.3 outline processing in the position detection unit........................................................................................................ 117 14.4 timer unit........................................................................................................................... 118 14.4.1 configuration of the timer unit.................................................................................................................................... 119 14.4.1.1 timer circuit register functions 14.4.1.2 outline processing in the timer unit 14.5 three-phase pwm output unit........................................................................................... 124 14.5.1 configuration of the three-phase pwm output unit...................................................................................................... 124 14.5.1.1 pulse width modulation circuit (pwm waveform generating unit) 14.5.1.2 commutation control circuit 14.5.2 register functions of the waveform synthesis circuit................................................................................................. 128 iii
14.5.3 port output as set with uoc/voc/woc bits and upwm/vpwm/wpwm bits........................................................ 130 14.5.4 protective circuit........................................................................................................................................................... 132 14.5.5 functions of protective circuit registers...................................................................................................................... 134 14.6 electrical angle timer and waveform arithmetic circuit................................................. 136 14.6.1 electrical angle timer and waveform arithmetic circuit........................................................................................... 137 14.6.1.1 functions of the electrical angle timer and waveform arithmetic circuit registers 14.6.1.2 list of pmd related control registers 15. asynchronous serial interface (uart) 15.1 configuration....................................................................................................................... 149 15.2 control ................................................................................................................................ 150 15.3 transfer data format........................................................................................................... 152 15.4 transfer rate....................................................................................................................... 153 15.5 data sampling method........................................................................................................ 153 15.6 stop bit length................................................................................................................. 154 15.7 parity.................................................................................................................................... 154 15.8 transmit/receive operation................................................................................................ 154 15.8.1 data transmit operation............................................................................................................................................... 154 15.8.2 data receive operation................................................................................................................................................. 154 15.9 status flag........................................................................................................................... 155 15.9.1 parity error.................................................................................................................................................................... 155 15.9.2 framing error................................................................................................................................................................ 155 15.9.3 overrun error................................................................................................................................................................. 155 15.9.4 receive data buffer full............................................................................................................................................... 156 15.9.5 transmit data buffer empty......................................................................................................................................... 156 15.9.6 transmit end flag......................................................................................................................................................... 157 16. synchronous serial interface (sio) 16.1 configuration....................................................................................................................... 159 16.2 control................................................................................................................................. 160 16.3 serial clock.......................................................................................................................... 162 16.3.1 clock source.................................................................................................................................................................. 162 16.3.1.1 internal clock 16.3.1.2 external clock 16.3.2 shift edge....................................................................................................................................................................... 163 16.3.2.1 leading edge 16.3.2.2 trailing edge 16.4 number of bits to transfer.................................................................................................... 163 16.5 number of words to transfer................................................................................................ 163 16.6 transfer mode..................................................................................................................... 164 16.6.1 4-bit and 8-bit transfer modes........................................................................................................................................ 164 16.6.2 4-bit and 8-bit receive modes......................................................................................................................................... 166 16.6.3 8-bit transfer / receive mode.......................................................................................................................................... 167 17. 10-bit ad converter (adc) 17.1 configuration....................................................................................................................... 171 17.2 register configuration......................................................................................................... 172 17.3 function.............................................................................................................................. 175 17.3.1 software start mode...................................................................................................................................................... 175 17.3.2 repeat mode.................................................................................................................................................................. 175 17.3.2.1 register setting 17.3.3 intpwm start mode.................................................................................................................................................... 177 iv
17.3.3.1 register setting 17.4 stop mode during ad conversion.................................................................................... 179 17.5 analog input voltage and ad conversion result.............................................................. 180 17.6 precautions about ad converter......................................................................................... 181 17.6.1 analog input pin voltage range......................................................................................................................................181 17.6.2 analog input shared pins............................................................................................................................................... 181 17.6.3 noise countermeasure................................................................................................................................................... 181 18. flash memory 18.1 flash memory control.........................................................................................................184 18.1.1 flash memory command sequence execution control (flscr).............................................................. 184 18.2 command sequence............................................................................................................ 185 18.2.1 byte program................................................................................................................................................................. 185 18.2.2 sector erase (4-kbyte erase).......................................................................................................................................... 185 18.2.3 chip erase (all erase)................................................................................................................................................... 185 18.2.4 product id entry............................................................................................................................................................186 18.2.5 product id exit.............................................................................................................................................................. 186 18.2.6 security program........................................................................................................................................................... 186 18.3 toggle bit (d6).................................................................................................................... 186 18.4 access to the flash memory area....................................................................................... 187 18.4.1 flash memory control in the serial prom mode........................................................................................................ 187 18.4.1.1 how to write to the flash memory by executing the control program in the ram area (in the ram loader mode within the serial prom mode) 18.4.2 flash memory control in the mcu mode..................................................................................................................... 189 18.4.2.1 how to write to the flash memory by executing a user write control program in the ram area (in the mcu mode) 19. serial prom mode 19.1 outline................................................................................................................................. 191 19.2 memory mapping................................................................................................................ 191 19.3 serial prom mode setting................................................................................................. 192 19.3.1 serial prom mode control pins.................................................................................................................................. 192 19.3.2 pin function................................................................................................................................................................... 192 19.3.3 example connection for on-board writing..................................................................................................................193 19.3.4 activating the serial prom mode................................................................................................................................194 19.4 interface specifications for uart...................................................................................... 195 19.5 operation command............................................................................................................196 19.6 operation mode................................................................................................................... 196 19.6.1 flash memory erasing mode (operating command: f0h)........................................................................................... 198 19.6.2 flash memory writing mode (operation command: 30h)........................................................................................... 200 19.6.3 ram loader mode (operation command: 60h)......................................................................................................... 203 19.6.4 flash memory sum output mode (operation command: 90h).................................................................................. 205 19.6.5 product id code output mode (operation command: c0h)....................................................................................... 206 19.6.6 flash memory status output mode (operation command: c3h)................................................................................ 208 19.6.7 flash memory security program setting mode (operation command: fah)............................................................. 209 19.7 error code........................................................................................................................... 211 19.8 checksum (sum)................................................................................................................ 211 19.8.1 calculation method........................................................................................................................................................ 211 19.8.2 calculation data............................................................................................................................................................. 211 19.9 intel hex format (binary)................................................................................................... 213 19.10 passwords.......................................................................................................................... 213 19.10.1 password string........................................................................................................................................................... 214 19.10.2 handling of password error........................................................................................................................................ 214 19.10.3 password management during program development............................................................................................... 214 19.11 product id code................................................................................................................ 215 v
19.12 flash memory status code................................................................................................215 19.13 specifying the erasure area.............................................................................................. 217 19.14 port input control register................................................................................................ 218 19.15 flowchart........................................................................................................................... 219 19.16 uart timing.................................................................................................................... 220 20. input/output circuitry 20.1 control pins......................................................................................................................... 221 20.2 input/output ports................................................................................................................. 222 20.3 nc pins................................................................................................................................ 222 21. electrical characteristics 21.1 absolute maximum ratings................................................................................................ 223 21.2 operating conditions........................................................................................................... 224 21.2.1 mcu mode (flash programming or erasing) ............................................................................................................... 224 21.2.2 mcu mode (except flash programming or erasing) ................................................................................................... 224 21.2.3 serial prom mode........................................................................................................................................................ 225 21.3 dc characteristics............................................................................................................... 225 21.4 on-chip oscillator characteristics...................................................................................... 226 21.5 ad conversion characteristics........................................................................................... 226 21.6 power on reset circuit (por)............................................................................................. 227 21.7 voltage detection circuit (vltd)....................................................................................... 228 21.8 ac characteristics............................................................................................................... 228 21.9 flash characteristics............................................................................................................ 228 21.10 handling precaution.......................................................................................................... 229 22. package dimensions vi
cmos 8-bit microcontroller TMP88F846UG the TMP88F846UG is a single-chip 8-bit high-speed and high-functionality microcomputer incorporating 8192 bytes of flash memory. it is pin-compatible with the tmp88ch41ug (mask rom version). the TMP88F846UG can realize operations equivalent to those of the tmp88ch41ug by programming the on-chip flash memory. product no. rom (flash) ram package maskrom mcu TMP88F846UG 8192 bytes 512+128 bytes lqfp44-p-1010-0.80b tmp88ch41ug 1.1 features 1. 8-bit single chip microcomputer tlcs-870/x series - instruction execution time : 0.20 s (at 20 mhz) - 181 types & 842 basic instructions 2. 26 interrupt sources (external : 6 internal : 20) 3. input / output ports (33 pins) large current output: 16pins (typ. 20ma), led direct drive 4. power-on reset circuit 5. voltage detection circuit(vltd) 6. prescaler - time base timer divider output function (dvo) 7. watchdog timer select of "internal reset request" or "interrupt request". 8. 16-bit timer counter: 1 ch - timer, external trigger, window, pulse width measurement, event counter, programmable pulse generate (ppg) modes 9. 16-bit timer/counter(ctc): 1ch - ctc:timer,event counter or ppg (programmable pulse) output 10. 8-bit timer counter : 1 ch - timer, event counter, capture modes 11. 8-bit timer counter : 1 ch - timer, event counter, pulse width modulation (pwm) output, programmable divider output (pdo) modes 12. programmable motor driver (pmd) : 1 ch - sine wave drive circuit (built-in sine wave data-table ram) rotor position detect function motor control timer and capture function overload protective function auto commutation and auto position detection start function this product uses the super flash? technology under the licence of silicon storage technology, inc. super flash? is registered trademark of silicon storage technology, inc. TMP88F846UG page 1
13. 8-bit uart/sio : 1 ch 14. 10-bit successive approximation type ad converter - analog input: 8 ch 15. clock oscillation circuit : 1 set 16. low power consumption operation (2 modes) - stop mode: oscillation stops. (battery/capacitor back-up.) - idle mode: cpu stops. only peripherals operate using high frequency clock. release by interrupts (cpu restarts). 17. operation voltage: 4.5 v to 5.5 v at 20mhz TMP88F846UG 1.1 features page 2
1.2 pin assignment p67 (ain7/dbout1) p66 (ain6) p65 (ain5) p64 (ain4) p63 (ain3) p62 (ain2) p61 (ain1) p60 (ain0) p47 (ctc) p46 ( ppg2) p45 (so/txd) varef p44 (si/rxd/boot) avdd p43 ( sck) avss p42 (pdu1) ( int0) p10 p41 (pdv1) (int1) p11 p40 (pdw1) (tc1/int2) p12 p37 ( cl1) ( dvo) p13 p36 ( emg1) ( ppg1) p14 p35 (u1) p15 p34 (v1) nc p33 (w1) nc p32 (x1) vss nc nc test vdd (int3/tc3) p21 ( pwm4/pdo4/int4/tc4) p22 reset ( stop/ int5) p20 (z1) p30 (y1) p31 figure 1-1 pin assignment TMP88F846UG page 3
1.3 block diagram figure 1-2 block diagram TMP88F846UG 1.3 block diagram page 4
1.4 pin names and functions the TMP88F846UG has mcu mode, parallel prom mode, and serial prom mode. table 1-1 shows the pin functions in mcu mode. the serial prom mode is explained later in a separate chapter. table 1-1 pin names and functions(1/3) pin name pin number input/output functions p15 42 io port15 p14 ppg1 41 io o port14 ppg1 output p13 dvo 40 io o port13 divider output p12 int2 tc1 39 io i i port12 external interrupt 2 input tc1 input p11 int1 38 io i port11 external interrupt 1 input p10 int0 37 io i port10 external interrupt 0 input p22 tc4 int4 pwm4/pdo4 7 io i i o port22 tc4 input external interrupt 4 input pwm4/pdo4 output p21 tc3 int3 6 io i i port21 tc3 pin input external interrupt 3 input p20 int5 stop 9 io i i port20 external interrupt 5 input stop mode release signal input p37 cl1 17 io i port37 pmd over load protection input1 p36 emg1 16 io i port36 pmd emergency stop input1 p35 u1 15 io o port35 pmd control output u1 p34 v1 14 io o port34 pmd control output v1 p33 w1 13 io o port33 pmd control output w1 p32 x1 12 io o port32 pmd control output x1 p31 y1 11 io o port31 pmd control output y1 p30 z1 10 io o port30 pmd control output z1 TMP88F846UG page 5
table 1-1 pin names and functions(2/3) pin name pin number input/output functions p47 ctc 25 io i port47 ctc input p46 ppg2 24 io i port46 ppg2 output p45 so txd 23 io o o port45 serial data output uart data output p44 si rxd boot 22 io i i i port44 serial data input uart data input serial prom mode control input p43 sck 21 io io port43 serial clock i/o p42 pdu1 20 io i port42 pmd control input u1 p41 pdv1 19 io i port41 pmd control input v1 p40 pdw1 18 io i port40 pmd control input w1 p67 ain7 dbout1 33 io i o port67 analog input7 pmd debug output1 p66 ain6 32 io i port66 analog input6 p65 ain5 31 io i port65 analog input5 p64 ain4 30 io i port64 analog input4 p63 ain3 29 io i port63 analog input3 p62 ain2 28 io o port62 analog input2 p61 ain1 27 io i port61 analog input1 p60 ain0 26 io i port60 analog input0 reset 20 io reset signal test 4 i test pin for out-going test and the serial prom mode control pin. usually fix to low level. fix to high level when the serial prom mode starts. varef 34 i analog base voltage input pin for a/d conversion avdd 35 i analog power supply TMP88F846UG 1.4 pin names and functions page 6
table 1-1 pin names and functions(3/3) pin name pin number input/output functions avss 36 i analog power supply vdd 24 io +5v vss 1 i 0(gnd) nc 43 i non connection nc01 44 i non connection nc02 2 i non connection nc03 3 i non connection TMP88F846UG page 7
TMP88F846UG 1.4 pin names and functions page 8
2. functional description 2.1 functions of the cpu core the cpu core consists mainly of the cpu, system clock control circuit, and interrupt control circuit. this chapter describes the cpu core, program memory, data memory, and reset circuit of the TMP88F846UG. 2.1.1 memory address map the memory of the TMP88F846UG consists of four blocks: rom, ram, sfr (special function registers), and dbr (data buffer registers), which are mapped into one 1-mbyte address space. the general-purpose registers consist of 16 banks, which are mapped into the ram address space. figure 2-1 shows a memory address map of the TMP88F846UG. figure 2-1 memory address map TMP88F846UG page 9 vector table for vector call instructions interrupt vector table interrupt vector table program memory rom ( bytes) ram ( bytes) ram (128 bytes) sfr rom: read-only memory program memory vector table sfr: special function registers input/output port peripheral hardware control register peripheral hardware status register system control register interrupt control register program status word dbr: data buffer registers input/output port peripheral hardware control registe r peripheral hardware status register ram: random access memory data memory stack general-purpose register bank random-access memory special function register general-purpose register bank (8 registers 16 banks) data buffer register (peripheral hardware control register / status register) 64 bytes 64 bytes 64 bytes 128 bytes bytes bytes 128 bytes 00000h 000c0h 000bfh 04000h 0003fh 00040h 01fffh fffffh fff7fh fff80h fff40h fff00h fff3fh bytes 512 512 8k 8064 dbr 01f80h 05effh 002bfh 128
2.1.2 program memory (rom) the TMP88F846UG contains 8kbytes program memory (flash) located at addresses 04000h to 05effh and addresses fff00h to fffffh. 2.1.3 data memory (ram) the TMP88F846UG contains 512bytes +128bytes ram. the first 128bytes location (00040h to 000bfh) of the internal ram is shared with a general-purpose register bank. the content of the data memory is indeterminate at power-on, so be sure to initialize it in the initialize rou- tine . example :clearing the internal ram of the TMP88F846UG (clear all ram addresses to 0, except bank 0) ld hl, 0048h ; set the start address ld a, 00h ; set the initialization data (00h) ld bc, 277h ; set byte counts (-1) sramclr: ld (hl+), a dec bc jrs f, sramclr note: because general-purpose registers exist in the ram, never clear the current bank address of ram. in the above example, the ram is cleared except bank 0. TMP88F846UG 2. functional description 2.1 functions of the cpu core page 10
2.1.4 system clock control circuit the system clock control circuit consists of an on-chip oscillator, timing generator, and standby control circuit. figure 2-2 system clock control circuit 2.1.4.1 on-chip oscillator the on-chip oscillator the fundamental clock which serves as the reference for the system clocks supplied to the cpu core and peripheral hardware units. the frequency clock (frequency fc) be fixed at 20mhz, and it is changed by temperature or many years past. measurement of the oscillation frequency note:although no hardware functions are provided that allow the fundamental clock to be monitored directly from the outside, the oscillation frequency can be measured by forwarding the pulse of a fixed frequency (e.g., clock output) to a port and monitoring it in a program while interrupts and the watchdog timer are disabled. for systems that require adjusting the oscillation frequency, an adjustment program must be created beforehand. 2.1.4.2 timing generator the timing generator generates various system clocks from the fundamental clock that are supplied to the cpu core and peripheral hardware units. the timing generator has the following functions: 1. generate a divider output ( dvo) pulse 2. generate the source clock for the time base timer 3. generate the source clock for the watchdog timer 4. generate the internal source clock for the timer counter 5. generate a warm-up clock when exiting stop mode (1) configuration of the timing generator the timing generator a 3-stage prescaler, 21-stage dividers, and a machine cycle counter. when reset and when entering/exiting stop mode, the prescaler and dividers are cleared to 0. TMP88F846UG page 11 timing gener ator standby control circuit high-frequency clock oscillator circuit tbtcr syscr2 syscr1 on-chip oscillator fc 00036h 00038h 00039h system clocks timing generator control register system control register
figure 2-3 configuration of the timing generator TMP88F846UG 2. functional description 2.1 functions of the cpu core page 12 dv1ck fc prescaler divider divider selector timer counter machine cycle counter 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 s a y b 6 5 4 3 2 1 1 2 0 standby control circuit watchdog timer time base timer divider output etc.
divider control register cgcr (0030h) 7 6 5 4 3 2 1 0 0 0 dv1ck 0 0 0 (initial value: 000* *000) dv1ck selects input clock to the first di- vider stage 0: fc/4 1: fc/8 r/w note 1: fc: the high-frequency clock [hz], *: dont care note 2: the cgcr register bits 4 and 3 show an indeterminate value when read. note 3: be sure to write 0 to cgcr register bits 7, 6, 2, 1 and 0. timing generator control register tbtcr (0036h) 7 6 5 4 3 2 1 0 dvoen dvock 0 tbten tbtck (initial value: 0000 0000) note 1: be sure to write 0 to tbtcr register bit 4. (2) machine cycle instruction execution and the internal hardware operations are synchronized to the system clocks. the minimum unit of instruction execution is referred to as the machine cycle. the tlcs-870/x series has 15 types of instructions, from 1-cycle instructions which are executed in one machine cycle up to 15-cycle instructions that require a maximum of 15 machine cycles. a machine cycle consists of four states (s0 to s3), with each state comprised of one main system clock cycle. figure 2-4 machine cycles TMP88F846UG page 13 main system clock states s0 s1 s2 s3 s0 s1 s2 s3 1/fc (0.20 s at 20 mhz) machine cycle
2.1.4.3 standby control circuit the standby control circuit starts/stops the high-frequency clock oscillator circuit and selects the main system clock. the system control registers (syscr1, syscr2) are used to control operation modes of this circuit. figure 2-5 shows an operation mode transition diagram, followed by description of the system control registers. (1) single clock mode only the high-frequency clock oscillator circuit is used. because the main system clock is generated from the high-frequency clock, the machine cycle time in single clock mode is 4/fc [s]. 1. normal mode in this mode, the cpu core and peripheral hardware units are operated with the high-fre- quency clock. the TMP88F846UG enters this normal mode after reset. 2. idle mode in this mode, the cpu and watchdog timer are turned off while the peripheral hardware units are operated with the high-frequency clock. idle mode is entered into by using system control register 2. the device is placed out of this mode and back into normal mode by an interrupt from the peripheral hardware or an external interrupt. when imf (interrupt master enable flag) = 1 (interrupt enabled), the device returns to normal operation after the interrupt has been serviced. when imf = 0 (interrupt disabled), the device restarts execution beginning with the instruction next to one that placed it in idle mode. 3. stop mode the entire system operation including the oscillator circuit is halted, retaining the internal state immediately before being stopped, with a minimal amount of power consumed. stop mode is entered into by using system control register 1, and is exited by stop pin input (level or edge selectable). after an elapse of the warm-up time, the device restarts exe- cution beginning with the instruction next to one that placed it in stop mode. table 2-1 single clock mode operation mode oscillator circuit cpu core peripheral circuit machine cycle time high frequency low frequency single clock reset oscillate - reset reset 4/fc [s] normal operate operate idle stop stop stop stop - figure 2-5 operation mode transition diagram TMP88F846UG 2. functional description 2.1 functions of the cpu core page 14 reset stop mode normal mode idle mode interrupt instruction input for releasing mode instruction reset deasserted
system control register 1 syscr1 (0038h) 7 6 5 4 3 2 1 0 stop relm retm outen wut (initial value: 0000 00**) stop place the device in stop mode 0: keep the cpu core and peripheral hardware operating 1: stop the cpu core and peripheral hardware (placed in stop mode) r/w relm select method by which the de- vice is released from stop mode 0: released by a rising edge on stop pin input 1: released by a high level on stop pin input retm select operation mode after ex- iting stop mode 0: returns to normal mode 1: reserved outen select port output state during stop mode 0: high-impedance state 1: hold output wut unit of warm-up time when ex- iting stop mode when returning to normal mode dv1ck = 0 dv1ck = 1 00 3 2 16 /fc 3 2 17 /fc 01 2 16 /fc 2 17 /fc 10 2 14 /fc 2 15 /fc 11 reserved reserved note 1: when entering from normal mode into stop mode, always be sure to set syscr1 to 0. note 2: when the device is released from stop mode by reset pin input, it always returns to normal mode regardless of how syscr1 is set. note 3: fc: high-frequency clock [hz], *: dont care note 4: the values of the syscr1 register bits 1 and 0 are indeterminate when read. note 5: when placed the device in stop mode, make sure to set "1" to syscr1. note 6: releasing the device from the stop mode causes the stop bit to be automatically cleared to 0. note 7: select an appropriate value for the warm-up time according to the characteristic of the resonator used. system control register 2 syscr2 (0039h) 7 6 5 4 3 2 1 0 xen 0 sysck idle (initial value: 1000 ****) xen control high-frequency oscilla- tor 0: stop oscillation 1: continue or start oscillating r/w sysck select (write)/monitor (read) system clock 0: high-frequency clock (normal/idle) 1: reserved r/w idle place the device in idle mode 0: keep the cpu and wdt operating 1: stop the cpu and wdt (idle mode entered) r/w retm operation mode after releasing stop mode xen sysck 0 normal mode 1 0 1 no operation 0 1 note 1: when exiting stop mode, syscr2 are automatically rewritten according to syscr1. note 2: when syscr2is cleared to 0, the device is reset. note 3: wdt: watchdog timer, *: dont care note 4: be sure to write "0" to syscr2 register bit6. note 5: the values of the syscr2 register bits 3 to 0 are indeterminate when read. note 6: change the operation mode after disabling external interrupts. if interrupts are enabled after changing operation mode, clear interrupt latches as appropriate in advance. TMP88F846UG page 15
2.1.4.4 controlling operation modes (1) stop mode stop mode is controlled by system control register 1 (syscr1) and the stop pin input. the stop pin is shared with p20 port and int5 (external interrupt input 5). stop mode is entered into by setting stop (syscr1 register bit 7) to 1. during stop mode, the device retains the following state. 1. stop oscillation, thereby stopping operation of all internal circuits. 2. the data memory, register, program status word, and port output latch hold the state in which they were immediately before entering stop mode. 3. clear the prescaler and divider for the timing generator to 0. 4. the program counter holds the instruction address two instructions ahead the one that placed the device in stop mode (e.g., set (syscr1).7). the device is released from stop mode by the active level or edge on stop pin input as selected by syscr1. note:before entering stop mode, be sure to disable interrupts. this is because if the signal on an external interrupt pin changes state during stop (from entering stop mode till completion of warm-up) the interrupt latch is set to 1, so that the device may accept the interrupt immediately after exiting stop mode. also, when enabling interrupts after exiting stop mode, be sure to clear the unnecessary interrupt latches beforehand. a. released by level (when relm = 1) the device is released from stop mode by a high level on stop pin input. any instruction to place the device in stop mode is ignored when executed while stop pin input level is high, and the device immediately goes to a release sequence (warm-up) without entering stop mode. therefore, before stop mode can be entered while relm = 1, the stop pin input must be verified to be low in a program. there are following methods to do this verification. 1. testing the port status 2. int5 interrupt (interrupt generated at a falling edge on int5 pin input) example 1 :entering stop mode from normal mode by testing p20 port ld (syscr1), 01010000b ; select to be released from stop mode by level sstoph : test (p2dr) . 0 ; wait until stop pin input goes low jrs f, sstoph di ; imf 0 set (syscr1) . 7 ; place the device in stop mode example 2 :entering stop mode from normal mode by int5 interrupt pint5 : test (p2dr) . 0 ; do not enter stop mode if p20 port input level is ; high, to eliminate noise jrs f, sint5 ; do not enter stop mode if p20 port input level is ; high, to eliminate noise ld (syscr1), 01010000b ; select to be released from stop mode by level di ; imf 0 set (syscr1) . 7 ; place the device in stop mode sint5 : reti TMP88F846UG 2. functional description 2.1 functions of the cpu core page 16
figure 2-6 released from stop mode by level note 1: once warm-up starts, the device does not return to stop mode even when the stop pin input is pulled low again. note 2: if relm is changed to 1 (level mode) after being set to 0 (edge mode), stop mode remains unchanged unless a rising edge on stop pin input is detected. a. released by edge (when relm = 0) the device is released from stop mode by a rising edge on stop pin input. this method is used in applications where a relatively short time of program processing is repeated at certain fixed intervals. apply a fixed-period signal (e.g., clock from the low-power oscillating source) to the stop pin. when relm = 0 (edge mode), the device is placed in stop mode even when the stop pin input level is high. example :entering stop mode from normal mode di ; imf 0 ld (syscr1) , 10010000b ; set to be released by edge when entering stop mode figure 2-7 released from stop mode by edge TMP88F846UG page 17 stop pin xout pin normal operation v ih stop mode warm-up stop mode placed into stop mode in a program released from stop mode in hardware by a rising edge on stop pin input. normal operation stop pin xout pin normal operation released from stop mode in hardware normal operation v ih stop mode warm-up detect low on stop pin input in a program before entering stop mode always released by a high level on stop pin input
the device is released from stop mode following the sequence described below. 1. only the high-frequency oscillator is oscillating. 2. a warm-up time is inserted in order to allow for the clock oscillation to stabilize. during warm- up, the internal circuits remain idle. the warm-up time can be selected from three choices according to the oscillator characteristics by using syscr1. 3. after an elapse of the warm-up time, the device restarts normal operation beginning with the instruction next to one that placed it in stop mode. at this time, the prescaler and divider for the timing generator start from the zero-cleared state. table 2-2 warm-up time (example: fc = 20 mhz) wut warm-up time [ms] when returning to normal mode dv1ck = 0 dv1ck = 1 00 9.831 19.662 01 3.277 6.554 10 0.819 1.638 11 reserved reserved note:because the warm-up time is obtained from the fundamental clock by dividing it, if the oscillation frequency fluctuates while exiting stop mode, the warm-up time becomes to have some error. therefore, the warm-up time must be handled as an approximate value. the device can also be released from stop mode by pulling the reset pin input low, in which case the device is immediately reset as is normally reset by reset. after reset, the device starts operating from normal mode. note:when exiting stop mode while the device is retained at low voltage, the following caution is required. before exiting stop mode, the power supply voltage must be raised to the operating voltage. at this time, the reset pin level also is high and rises along with the power supply voltage. if the device has a time-constant circuit added external to the chip, the voltage on reset pin input does not rise as fast as the power supply voltage. therefore, if the voltage level on reset pin input is below the reset pins noninverted, high-level input voltage (hysteresis input), the device may be reset. TMP88F846UG 2. functional description 2.1 functions of the cpu core page 18
figure 2-8 entering and exiting stop mode (when dv1ck = 0) TMP88F846UG page 19 oscillation instruction execution divider (a) entering stop mode (example: entered into by the set (syscr1). 7 instruction placed at address a) main system clock main system clock program counter stop stop a + 2 a + 3 n n + 1 n + 2 n + 3 n + 4 0 set (syscr1). 7 oscillator circuit oscillator circuit warm-up (b) exiting stop mode oscillation instruction execution divider program counter stop stop count up 0 0 1 2 3 a + 3 instruction at address a + 4 instruction at address a + 3 instruction at address a + 2 stop pin input a + 4 a + 5 a + 6
(2) idle mode idle mode is controlled by system control register 2 (syscr2) and a maskable interrupt. during idle mode, the device retains the following state. 1. the cpu and watchdog timer stop operating. the peripheral hardware continues operating. 2. the data memory, register, program status word, and port output latch hold the state in which they were immediately before entering idle mode. 3. the program counter holds the instruction address two instructions ahead the one that placed the device in idle mode. example :placing the device in idle mode set (syscr2) . 4 figure 2-9 idle mode TMP88F846UG 2. functional description 2.1 functions of the cpu core page 20 place the device in idle mode (by instruction) stop the cpu and wdt interrupt handling execute the instruction next to one that placed device idle mode reset ye s no no no interrupt request ? imf = 1 reset input ? ye s yes (released by interrupt) (released normally)
the device can be released from idle mode normally or by an interrupt as selected with the interrupt master enable flag (imf). a. released normally (when imf = 0) the device can be released from idle mode by the interrupt source enabled by the interrupt individual enable flag (ef), and restarts execution beginning with the instruction next to one that placed it in idle mode. the interrupt latch (il) for the interrupt source used to exit idle mode normally needs to be cleared to 0 using a load instruction. b. released by interrupt (when imf = 1) the device can be released from idle mode by the interrupt source enabled by the interrupt individual enable flag (ef), and enters interrupt handling. after interrupt handling, the device returns to the instruction next to one that placed it in idle mode. the device can also be released from idle mode by pulling the reset pin input low, in which case the device is immediately reset as is normally reset by reset. after reset, the device starts operating from normal mode. note:if a watchdog timer interrupt occurs immediately before entering idle mode, the device pro- cesses the watchdog timer interrupt without entering idle mode. TMP88F846UG page 21
figure 2-10 entering and exiting idle mode TMP88F846UG 2. functional description 2.1 functions of the cpu core page 22 (b) exiting idle mode (a) entering idle mode (example: entered into by the set instruction placed at address a) idle a + 2 a + 3 set (syscr2). 4 operating 1. released normally idle idle a + 3 a + 4 instruction at address a + 2 operating 2. released by interrupt idle idle a + 3 interrupt accepted operating main system clock interrupt request program counter instruction execution main system clock interrupt request program counter instruction execution watchdog timer main system clock interrupt request program counter instruction execution watchdog timer watchdog timer
2.1.5 reset circuit the TMP88F846UG has seven ways to generate a reset: external reset input, address trap reset, watchdog timer reset , system clock reset, voltage detect reset, power on reset and trimming data reset. table 2-3 shows how the internal hardware is initialized by reset operation. at power-on time, the internal cause reset circuits (watchdog timer reset, address trap reset, and system clock reset) are not initialized. the power-on reset signal and trimming data reset signal are input to the power-on warming-up reset circuit, which causes the device to enter a reset state. after the power-on warming-up time (tpowup) has elapsed, the reset is released. for details, refer to the section on the power-on reset circuit. table 2-3 internal hardware initialization by reset operation internal hardware initial value internal hardware initial value program counter (pc) (ffffeh to ffffch) prescaler and divider for the timing generator 0 stack pointer (sp) not initialized general-purpose registers (w, a, b, c, d, e, h, l) not initialized register bank selector (rbs) 0 watchdog timer enable jump status flag (jf) 1 zero flag (zf) not initialized output latch of input/output port see description of each input/output port. carry flag (cf) not initialized half carry flag (hf) not initialized sign flag (sf) not initialized overflow flag (vf) not initialized interrupt master enable flag (imf) 0 interrupt individual enable flag (ef) 0 control register see description of each control register. interrupt latch (il) 0 interrupt nesting flag (inf) 0 ram not initialized 2.1.5.1 external reset input the reset pin is a hysteresis input with a pull-up resistor included. by holding the reset pin low for at least three machine cycles (12/fc [s]) or more while the power supply voltage is within the rated operating voltage range and the oscillator is oscillating stably, the device is reset and its internal state is initialized. when the reset pin input is released back high, the device is freed from reset and starts executing the program beginning with the vector address stored at addresses ffffch to ffffeh. TMP88F846UG page 23
figure 2-11 reset circuit 2.1.5.2 address trap reset if the cpu should start looping for reasons of noise, etc. and attempts to fetch instructions from the internal ram,sfr or dbr area, the device generates an internal reset. the address trap permission/prohibition is set by the address trap reset control register (atas,atkey). the address trap is permitted initially and the internal reset is generated by fetching from internal ram,sfr or dbr area. if the address trap is prohibited, instructions in the internal ram area can be executed. address trap control register atas (1f94h) 7 6 5 4 3 2 1 0 - - - - - - - atas (initial value: **** ***0) atas select the address trap permission / prohibition 0: permit address trap 1: prohibit address trap (it may be available after setting control code for atkey register) write only address trap control code register atkey (1f95h) 7 6 5 4 3 2 1 0 (initial value: **** ****) atkey write control code to prohibit address trap d2h: address trap prohibition code others: ineffective write only note:read-modify-write instructions, such as a bit manipulation, cannot access atas or atkey register because these register are write only. note 1: in development tools, address trap cannot be prohibited in the internal ram,sfr or dbr area with the address trap control registers. when using development tools, even if the address trap permission/pro- hibition setting is changed in the users program, this change is ineffective. to execute instructions from the ram area, development tools must be set accordingly. note 2: while the swi instruction at an address immediately before the address trap area is executing, the program counter is incremented to point to the next address in the address trap area; an address trap is therefore taken immediately. TMP88F846UG 2. functional description 2.1 functions of the cpu core page 24 vdd reset internal reset watchdog timer reset malfunction reset output circuit warming up circuit address trap reset system clock reset voltage detection 1 voltage detection 2 power on reset trimming data reset
development tool setting ? to prohibit the address trap: 1. modify the iram (mapping attribute) area to (00040h to 000bfh) in the memory map win- dow. 2. set 000c0h to "address trap prohibition area" as a new eram (mapping attribute) area. 3. load the user program 4. execute the address trap prohibition code in the users program 2.1.5.3 watchdog timer reset refer to the section watchdog timer. 2.1.5.4 system clock reset when syscr2 is cleared to 0 or when syscr2 is cleared to 0 while syscr2 = 0, the system clock is turned off, causing the cpu to become locked up. to prevent this problem, upon detecting syscr2 = 0, syscr2 = syscr2 = 0 or syscr2 = 1, the device automatically generates an internal reset signal to let the system clock continue oscillating. 2.1.5.5 voltage detection reset a voltage detection reset is generated internally when the supply voltage (vdd) falls below the predefined detection voltage. refer to section voltage detection circuit. 2.1.5.6 power-on reset a power-on reset is generated internally when the supply voltage (vdd) is turned on. refer to section power on reset. 2.1.5.7 trimming data reset trimming data bits are provided for adjusting the ladder resistor used to generate the reference voltages for the power-on reset signal and voltage detecting signal. these bits are read from the flash memory and latched internally during the power-on warming up period (tpowup). the trimming data reset is generated if the trimming data is corrupted due to noise or other causes. TMP88F846UG page 25
TMP88F846UG 2. functional description 2.1 functions of the cpu core page 26
3. interrupt control circuit the TMP88F846UG has a total of 26 interrupt sources excluding reset. interrupts can be nested with priorities. two of the internal interrupt sources are pseudo non-maskable while the rest are maskable. interrupt sources are provided with interrupt latches (il), which hold interrupt requests, and independent vectors. the interrupt latch is set to 1 by the generation of its interrupt request which requests the cpu to accept its interrupts. interrupts are enabled or disabled by software using the interrupt master enable flag (imf) and interrupt enable flag (ef). if more than one interrupts are generated simultaneously, interrupts are accepted in order which is dominated by hardware. however, there are no prioritized interrupt factors among non-maskable interrupts. interrupt factors enable condition interrupt latch vector ad- dress priority internal/external (reset) non-maskable - ffffc high 0 internal intswi (software interrupt) pseudo non-maskable - ffff8 1 internal intwdt (watchdog timer interrupt) pseudo non-maskable il2 ffff4 2 external int0 (external interrupt 0) imf? ef3 = 1, int0en = 1 il3 ffff0 3 - reserved imf? ef4 = 1 il4 fffec 4 external int1 (external interrupt 1) imf? ef5 = 1 il5 fffe8 5 internal inttbt (tbt interrupt) imf? ef6 = 1 il6 fffe4 6 - reserved imf? ef7 = 1 il7 fffe0 7 internal intemg1 (ch1 error detect interrupt) imf? ef8 = 1 il8 fffdc 8 - reserved imf? ef9 = 1 il9 fffd8 9 internal intclm1 (ch1 overload protection interrupt) imf? ef10 = 1 il10 fffd4 10 - reserved imf? ef11 = 1 il11 fffd0 11 internal inttmr31 (ch1 timer 3 interrupt) imf? ef12 = 1 il12 fffcc 12 - reserved imf? ef13 = 1 il13 fffc8 13 - reserved imf? ef14 = 1 il14 fffc4 14 external int5 (external interrupt 5) imf? ef15 = 1 il15 fffc0 15 internal intpdc1 (ch1 position detect interrupt) imf? ef16 = 1 il16 fffbc 16 - reserved imf? ef17 = 1 il17 fffb8 17 internal intpwm1 (ch1 waveform generator interrupt) imf? ef18 = 1 il18 fffb4 18 - reserved imf? ef19 = 1 il19 fffb0 19 internal intedt1 (ch1 electric angle timer interrupt) imf? ef20 = 1 il20 fffac 20 - reserved imf? ef21 = 1 il21 fffa8 21 internal inttmr11 (ch1 timer1 interrupt) imf? ef22 = 1 il22 fffa4 22 - reserved imf? ef23 = 1 il23 fffa0 23 internal inttmr21 (ch1 timer2 interrupt) imf? ef24 = 1 il24 fff9c 24 - reserved imf? ef25 = 1 il25 fff98 25 internal inttc1 (tc1 interrupt) imf? ef26 = 1 il26 fff94 26 internal intctc1 (ctc interrupt) imf? ef27 = 1 il27 fff90 27 - reserved imf? ef28 = 1 il28 fff8c 28 external int2 (external interrupt 2) imf? ef29 = 1 il29 fff88 29 external int3 (external interrupt 3) imf? ef30 = 1 il30 fff84 30 external int4 (external interrupt 4) imf? ef31 = 1 il31 fff80 31 internal intrx (uart receive interrupt) imf? ef32 = 1 il32 fff3c 32 internal inttx (uart transmit interrupt) imf? ef33 = 1 il33 fff38 33 internal intsio (sio interrupt) imf? ef34 = 1 il34 fff34 34 internal inttc3 (tc3 interrupt) imf? ef35= 1 il35 fff30 35 internal inttc4 (tc4 interrupt) imf? ef36 = 1 il36 fff2c 36 - reserved imf? ef37 = 1 il37 fff28 37 internal intadc (a/d converter interrupt) imf? ef38 = 1 il38 fff24 38 internal intvltd imf? ef39 = 1 il39 fff20 low 39 TMP88F846UG page 27
note 1: to use the watchdog timer interrupt (intwdt), clear wdtcr1 to "0" (it is set for the "reset request" after reset is released). it is described in the section "watchdog timer" for details. 3.1 interrupt latches (il39 to il2) an interrupt latch is provided for each interrupt source, except for a software interrupt and an executed the undefined instruction interrupt. when interrupt request is generated, the latch is set to 1, and the cpu is requested to accept the interrupt if its interrupt is enabled. the interrupt latch is cleared to "0" immediately after accepting interrupt. all interrupt latches are initialized to 0 during reset. the interrupt latches are located on address 003ch, 003dh, 002eh, 002fh and 002bh in sfr area. each latch can be cleared to "0" individually by instruction. however, il2 and il3 should not be cleared to "0" by software. for clearing the interrupt latch, load instruction should be used and then il2 should be set to "1". if the read-modify-write instructions such as bit manipulation or operation instructions are used, interrupt request would be cleared inadequately if interrupt is requested while such instructions are executed. since interrupt latches can be read, the status for interrupt requests can be monitored by software. but interrupt latches are not set to 1 by an instruction. note:in main program, before manipulating the interrupt enable flag (ef) or the interrupt latch (il), be sure to clear imf to "0" (disable interrupt by di instruction). then set imf newly again as required after operating on the ef or il (enable interrupt by ei instruction) in interrupt service routine, because the imf becomes "0" automatically, clearing imf need not execute normally on interrupt service routine. however, if using multiple interrupt on interrupt service routine, manipulating ef or il should be executed before setting imf="1". example 1 :clears interrupt latches di ; imf 0 ld (ill), 00000000b ; il2 to il7 0 ld (ilh), 00000000b ; il8 to il15 0 ld (ile), 00000000b ; il16 to il23 0 ld (ild), 00000000b ; il24 to il31 0 ld (ilc), 00000000b ; il32 to il39 0 ei ; imf 1 example 2 :reads interrupt latches ld wa, (ill) ; w (ilh), a (ill) ld bc, (ile) ; b (ild), c (ile) ld d, (ilc) ; d (ilc) example 3 :tests interrupt latches test (ill). 7 ; if il7 = 1 then jump jr f, sset TMP88F846UG 3. interrupt control circuit 3.1 interrupt latches (il39 to il2) page 28
3.2 interrupt enable register (eir) the interrupt enable register (eir) enables and disables the acceptance of interrupts, except for the pseudo non- maskable interrupts (software interrupt, undefined instruction interrupt, address trap interrupt and watchdog interrupt). pseudo non-maskable interrupt is accepted regardless of the contents of the eir. the eir consists of an interrupt master enable flag (imf) and the individual interrupt enable flags (ef). these registers are located on address 003ah, 003bh, 002ch, 002dh and 002ah in sfr area, and they can be read and written by an instructions (including read-modify-write instructions such as bit manipulation or operation instructions). 3.2.1 interrupt master enable flag (imf) the interrupt enable register (imf) enables and disables the acceptance of the whole maskable interrupt. while imf = 0, all maskable interrupts are not accepted regardless of the status on each individual interrupt enable flag (ef). by setting imf to 1, the interrupt becomes acceptable if the individuals are enabled. when an interrupt is accepted, imf is cleared to 0 after the latest status on imf is stacked. thus the maskable interrupts which follow are disabled temporarily. imf flag is set to "1" by the maskable interrupt return instruction [reti] after executing the interrupt service program routine, and mcu can accept the interrupt again. the latest interrupt request is generated already, it is available immediately after the [reti] instruction is executed. on the pseudo non-maskable interrupt, the non-maskable return instruction [retn] is adopted. in this case, imf flag is set to "1" only when it performs the pseudo non-maskable interrupt service routine on the interrupt acceptable status (imf=1). however, imf is set to "0" in the pseudo non-maskable interrupt service routine, it maintains its status (imf="0"). the imf is located on bit0 in eirl (address: 003ah in sfr), and can be read and written by an instruction. the imf is normally set and cleared by [ei] and [di] instruction respectively. during reset, the imf is initialized to 0. 3.2.2 individual interrupt enable flags (ef39 to ef3) each of these flags enables and disables the acceptance of its maskable interrupt. setting the corresponding bit of an individual interrupt enable flag to 1 enables acceptance of its interrupt, and setting the bit to 0 disables acceptance. during reset, all the individual interrupt enable flags (ef39 to ef3) are initialized to 0 and all maskable interrupts are not accepted until they are set to 1. note:in main program, before manipulating the interrupt enable flag (ef) or the interrupt latch (il), be sure to clear imf to "0" (disable interrupt by di instruction). then set imf newly again as required after operating on the ef or il (enable interrupt by ei instruction) in interrupt service routine, because the imf becomes "0" automatically, clearing imf need not execute normally on interrupt service routine. however, if using multiple interrupt on interrupt service routine, manipulating ef or il should be executed before setting imf="1". example :enables interrupts individually and sets imf di ; imf 0 set (eirl), .5 ; ef5 1 clr (eirl), .6 ; ef6 0 clr (eirh), .4 ; ef12 0 clr (eird), .0 ; ef24 0 : ei ; imf 1 TMP88F846UG page 29
interrupt latches (initial value: 0**0*0*0 *00*0000) ilh,ill (003dh, 003ch) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 il15 - - il12 - il10 - il8 - il6 il5 - il3 il2 inf ilh (003dh) ill (003ch) (initial value: 000*00*0 *0*0*0*0) ild,ile (002fh, 002eh) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 il31 il30 il29 - il27 il26 - il24 - il22 - il20 - il18 - il16 ild (002fh) ile (002eh) (initial value: 00*00000) ilc (002bh) 7 6 5 4 3 2 1 0 il39 il38 - il36 il35 il34 il33 il32 ile (002bh) il39 to il2 interrupt latches read write r/w 0: no interrupt request clears the interrupt request (note1) 1: interrupt request (unable to set interrupt latch) inf interrupt nesting flag 00: out of interrupt service reserved 01: on interrupt service of level 1 clear the nesting counter 10: on interrupt service of more than level 2 count-down 1 step for the nesting counter (note2) 11: on interrupt service of more than level 3 reserved note 1: il2 cannot alone be cleared. note 2: unable to detect the under-flow of counter. note 3: the nesting counter is set "0" initially, it performs count-up by the interrupt acceptance and count-down by executing the interrupt return instruction. note 4: in main program, before manipulating the interrupt enable flag (ef) or the interrupt latch (il), be sure to clear imf to "0" (disable interrupt by di instruction). then set imf newly again as required after operating on the ef or il (enable interrupt by ei instruction) in interrupt service routine, because the imf becomes "0" automatically, clearing imf need not execute normally on interrupt service routine. however, if using multiple interrupt on interrupt service routine, manipulating ef or il should be executed before setting imf="1". note 5: do not clear il with read-modify-write instructions such as bit operations. TMP88F846UG 3. interrupt control circuit 3.2 interrupt enable register (eir) page 30
interrupt enable registers (initial value: 0**0*0*0 *00*0**0) eirh,eirl (003bh, 003ah) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ef15 - - ef12 - ef10 - ef8 - ef6 ef5 - ef3 imf eirh (003bh) eirl (003ah) (initial value: 000*00*0 *0*0*0*0) eird,eire (002dh, 002ch) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ef31 ef30 ef29 - ef27 ef26 - ef24 - ef22 - ef20 - ef18 - ef16 eird (002dh) eire (002ch) (initial value: 00*00000) eire (002ah) 7 6 5 4 3 2 1 0 ef39 ef38 - ef36 ef35 ef34 ef33 ef32 eire (002ah) ef39 to ef3 individual-interrupt enable flag (specified for each bit) 0: 1: disables the acceptance of each maskable interrupt. enables the acceptance of each maskable interrupt. r/w imf interrupt master enable flag 0: 1: disables the acceptance of all maskable interrupts enables the acceptance of all maskable interrupts note 1: do not set imf and the interrupt enable flag (ef39 to ef3) to 1 at the same time. note 2: in main program, before manipulating the interrupt enable flag (ef) or the interrupt latch (il), be sure to clear imf to "0" (disable interrupt by di instruction). then set imf newly again as required after operating on the ef or il (enable interrupt by ei instruction) in interrupt service routine, because the imf becomes "0" automatically, clearing imf need not execute normally on interrupt service routine. however, if using multiple interrupt on interrupt service routine, manipulating ef or il should be executed before setting imf="1". TMP88F846UG page 31
3.3 interrupt sequence an interrupt request, which raised interrupt latch, is held, until interrupt is accepted or interrupt latch is cleared to 0 by resetting or an instruction. interrupt acceptance sequence requires 12 machine cycles (2.4 s @20 mhz) after the completion of the current instruction. the interrupt service task terminates upon execution of an interrupt return instruction [reti] (for maskable interrupts) or [retn] (for non-maskable interrupts). figure 3-1 shows the timing chart of interrupt acceptance processing. 3.3.1 interrupt acceptance processing is packaged as follows. a. the interrupt master enable flag (imf) is cleared to 0 in order to disable the acceptance of any following interrupt. b. the interrupt latch (il) for the interrupt source accepted is cleared to 0. c. the contents of the program counter (pc) and the program status word, including the interrupt master enable flag (imf), are saved (pushed) on the stack in sequence of pswh, pswl, pce, pch, pcl. meanwhile, the stack pointer (sp) is decremented by 5. d. the entry address (interrupt vector) of the corresponding interrupt service program, loaded on the vector table, is transferred to the program counter. e. read the rbs control code from the vector table, add its msb(4bit) to the register bank selector (rbs). f. count up the interrupt nesting counter. g. the instruction stored at the entry address of the interrupt service program is executed. note:when the contents of psw are saved on the stack, the contents of imf are also saved. note 1: a: return address, b: entry address, c: address which reti instruction is stored note 2: on condition that interrupt is enabled, it takes 62/fc [s] at maximum (if the interrupt latch is set at the first machine cycle on 15 cycle instruction) to start interrupt acceptance processing since its interrupt latch is set. figure 3-1 timing chart of interrupt acceptance/return interrupt instruction example: correspondence between vector table address for inttbt and the entry address of the interrupt service program TMP88F846UG 3. interrupt control circuit 3.3 interrupt sequence page 32 interrupt request interrupt latch (il) imf execute instruction pc sp 1-machine cycle interrupt service task n-3 n-4 n-4 a n-3 n n-5 a-1 a b b+1 b+2 a+1 a+2 b+3 c+2 c+1 execute instruction execute instruction execute reti instruction interrupt acceptance a+1 a n n-2 n-1 n-2 n-1
figure 3-2 vector table address, entry address a maskable interrupt is not accepted until the imf is set to 1 even if the maskable interrupt higher than the level of current servicing interrupt is requested. in order to utilize nested interrupt service, the imf is set to 1 in the interrupt service program. in this case, acceptable interrupt sources are selectively enabled by the individual interrupt enable flags. but dont use the read-modify-write instruction for eirl(0003ah) on the pseudo non-maskable interrupt service task. to avoid overloaded nesting, clear the individual interrupt enable flag whose interrupt is currently serviced, before setting imf to 1. as for non-maskable interrupt, keep interrupt service shorten compared with length between interrupt requests; otherwise the status cannot be recovered as non-maskable interrupt would simply nested. 3.3.2 saving/restoring general-purpose registers during interrupt acceptance processing, the program counter (pc) and the program status word (psw, includes imf) are automatically saved on the stack, but the accumulator and others are not. these registers are saved by software if necessary. when multiple interrupt services are nested, it is also necessary to avoid using the same data memory area for saving registers. the following four methods are used to save/restore the general-purpose registers. 3.3.2.1 using automatic register bank switching by switching to non-use register bank, it can restore the general-purpose register at high speed. usually the bank register "0" is assigned for main task and the bank register "1 to 15" are for the each interrupt service task. to make up its data memory efficiency, the common bank is assigned for non-multiple interrupt factor. it can return back to main-flow by executing the interrupt return instructions ([reti]/[retn]) from the current interrupt register bank automatically. thus, no need to restore the rbs by a program. example :register bank switching pintxx: (interrupt processing) ; begin of interrupt routine reti ; end of interrupt : vintxx: dp pintxx ; pintxx vector address setting db 1 ; rbs <- rbs + 1 rbs setting on pintxx 3.3.2.2 using register bank switching by switching to non-use register bank, it can restore the general-purpose register at high speed. usually the bank register "0" is assigned for main task and the bank register "1 to 15" are for the each interrupt service task. TMP88F846UG page 33 45h 23h 01h 06h fffe4h fffe5h fffe6h fffe7h vector rbs control code vector table address 12345h 12346h 12347h 12348h entry address interrupt service program
example :register bank switching pintxx: ld rbs, n ; rbs <- n begin of interrupt routine (interrupt processing) reti ; end of interrupt, restore rbs and interrupt return : vintxx: dp pintxx ; pintxx vector address setting db 0 ; rbs <- rbs + 0 rbs setting on pintxx 3.3.2.3 using push and pop instructions if only a specific register is saved or interrupts of the same source are nested, general-purpose registers can be saved/restored using the push/pop instructions. example :save/store register using push and pop instructions pintxx: push wa ; save wa register (interrupt processing) pop wa ; restore wa register reti ; return figure 3-3 save/store register using push and pop instructions 3.3.2.4 using data transfer instructions to save only a specific register without nested interrupts, data transfer instructions are available. example :save/store register using data transfer instructions pintxx: ld (gsava), a ; save a register (interrupt processing) ld a, (gsava) ; restore a register reti ; return TMP88F846UG 3. interrupt control circuit 3.3 interrupt sequence page 34 pc l pc h psw l psw h at acceptance of an interrupt pc l pc h psw l psw h a w pc l pc h psw l psw h b-5 b-4 b-3 b-2 b-1 b address (example) sp sp sp sp at execution of push instruction at execution of pop instruction at execution of reti instruction
figure 3-4 saving/restoring general-purpose registers under interrupt processing 3.3.3 interrupt return interrupt return instructions [reti]/[retn] perform as follows. [reti] maskable interrupt return [retn] non-maskable interrupt return 1. the contents of the program counter and the program status word are restored from the stack. 1. the contents of the program counter and the program status word are restored from the stack. 2. the stack pointer is incremented 5 times. 2. the stack pointer is incremented 5 times. 3. the interrupt master enable flag is set to "1". 3. the interrupt master enable flag is set to "1" only when a non-maskable interrupt is accepted in interrupt enable status. however, the interrupt master enable flag re- mains at "0" when so clear by an interrupt service pro- gram. 4. the interrupt nesting counter is decremented, and the interrupt nesting flag is changed. 4. the interrupt nesting counter is decremented, and the interrupt nesting flag is changed. interrupt requests are sampled during the final cycle of the instruction being executed. thus, the next interrupt can be accepted immediately after the interrupt return instruction is executed. note:when the interrupt processing time is longer than the interrupt request generation time, the interrupt service task is performed but not the main task. TMP88F846UG page 35 main task interrupt acceptance interrupt return interrupt service task saving registers restoring registers main task bank m interrupt acceptance interrupt return interrupt service task switch to bank n automatically restore to bank m automatically by [reti]/[retn] bank m bank n switch to bank n by ld, rbs and n instruction (a) saving/restoring by register bank changeover (b) saving/restoring general-purpose registers using push/pop data transfer instruction bank m
3.4 software interrupt (intsw) executing the swi instruction generates a software interrupt and immediately starts interrupt processing (intsw is highest prioritized interrupt). however, if processing of a non-maskable interrupt is already underway, executing the swi instruction will not generate a software interrupt but will result in the same operation as the nop instruction. use the swi instruction only for detection of the address error or for debugging. 3.4.1 address error detection ffh is read if for some cause such as noise the cpu attempts to fetch an instruction from a non-existent memory address during single chip mode. code ffh is the swi instruction, so a software interrupt is generated and an address error is detected. the address error detection range can be further expanded by writing ffh to unused areas of the program memory. address trap reset is generated in case that an instruction is fetched from ram, dbr or sfr areas. 3.4.2 debugging debugging efficiency can be increased by placing the swi instruction at the software break point setting address. TMP88F846UG 3. interrupt control circuit 3.4 software interrupt (intsw) page 36
3.5 external interrupts the TMP88F846UG has 6 external interrupt inputs. these inputs are equipped with digital noise reject circuits (pulse inputs of less than a certain time are eliminated as noise). edge selection is also possible with int1 to int4. the int0/p10 pin can be configured as either an external interrupt input pin or an input/output port, and is configured as an input port during reset. edge selection, and noise reject control and int0/p10 pin function selection are performed by the external interrupt control register (eintcr). source pin sub-pin enable conditions release edge (level) digital noise reject int0 int0 p10 imf + ef3 + int0en=1 falling edge pulses of less than 2/fc [s] are eliminated as noise. pulses of 6/fc [s] or more are considered to be signals. (at cgcr=0). int1 int1 p11 imf + ef5 = 1 falling edge or rising edge pulses of less than 15/fc or 63/fc [s] are elimina- ted as noise. pulses of 48/fc or 192/fc [s] or more are considered to be signals. (at cgcr=0). int2 int2 p12/tc1 imf + ef29 = 1 pulses of less than 7/fc [s] are eliminated as noise. pulses of 24/fc [s] or more are considered to be signals.(at cgcr=0). int3 int3 p21/tc3 imf + ef30 = 1 int4 int4 p22/tc4 imf + ef31 = 1 int5 int5 p20/ stop imf + ef15 = 1 falling edge pulses of less than 2/fc [s] are eliminated as noise. pulses of 6/fc [s] or more are considered to be signals. note 1: in normal or idle mode, if a signal with no noise is input on an external interrupt pin, it takes a maximum of "signal establishment time" from the input signal's edge to set the interrupt latch. (1) int1 pin 49/fc [s] ( at eintcr = "1") , 193/fc [s] ( at eintcr = "0") (2) int2 to int4 pins 25/fc [s] note 2: when eintcr = "0", il3 is not set even if a falling edge is detected on the int0 pin input. note 3: when a pin with more than one function is used as an output and a change occurs in data or input/output status, an interrupt request signal is generated in a pseudo manner. in this case, it is necessary to perform appropriate processing such as disabling the interrupt enable flag. external interrupt control register eintcr 7 6 5 4 3 2 1 0 (0037h) int1nc int0en int4es int3es int2es int1es (initial value: 0000 000*) int1nc noise reject time select 0: pulses of less than 63/fc [s] are eliminated as noise 1: pulses of less than 15/fc [s] are eliminated as noise r/w int0en p10/ int0 pin configuration 0: p10 input/output port 1: int0 pin (port p10 should be set to an input mode) r/w int4 es int4 edge select 00: rising edge 01: falling edge 10: rising edge and falling edge 11: h level r/w int3 es int3 edge select 0: rising edge 1: falling edge r/w int2 es int2 edge select int1 es int1 edge select note 1: fc: high-frequency clock [hz], *: dont care note 2: when the external interrupt control register (eintcr) is overwritten, the noise canceller may not operate normally. it is recommended that external interrupts are disabled using the interrupt enable register (eir). note 3: the maximum time from modifying eintcr until a noise reject time is changed is 2 6 /fc. note 4: in case reset pin is released while the state of int4 pin keeps "h" level, the external interrupt 4 request is not generated even if the int4 edge select(eintcr) is specified as "h" level. the rising edge is needed after reset pin is released. TMP88F846UG page 37
TMP88F846UG 3. interrupt control circuit 3.5 external interrupts page 38
4. special function register the TMP88F846UG adopts the memory mapped i/o system, and all peripheral control and transfers are performed through the special function register (sfr) or the data buffer register (dbr). the sfr is mapped on address 0000h to 003fh, dbr is mapped on address 1f80h to 1fffh. this chapter shows the arrangement of the special function register (sfr) and data buffer register (dbr) for TMP88F846UG. 4.1 sfr address read write 0000h reserved 0001h p1dr 0002h p2dr 0003h p3dr 0004h p4dr 0005h reserved 0006h p6dr 0007h reserved 0008h reserved 0009h reserved 000ah reserved 000bh p1cr 000ch reserved 000dh reserved 000eh reserved 000fh tc1cr 0010h tc1dral 0011h tc1drah 0012h tc1drbl 0013h tc1drbh 0014h ctc1cr1 0015h ctc1cr2 0016h - ctc1drl 0017h - ctc1drh 0018h reserved 0019h reserved 001ah tc4cr 001bh tc4dr 001ch tc3dra 001dh tc3drb - 001eh tc3cr 001fh reserved 0020h reserved 0021h reserved 0022h reserved 0023h reserved 0024h reserved 0025h reserved TMP88F846UG page 39
address read write 0026h adccra 0027h adccrb 0028h adcdrl - 0029h adcdrh - 002ah eirc 002bh ilc 002ch eire 002dh eird 002eh ile 002fh ild 0030h cgcr 0031h reserved 0032h reserved 0033h reserved 0034h - wdtcr1 0035h - wdtcr2 0036h tbtcr 0037h eintcr 0038h syscr1 0039h syscr2 003ah eirl 003bh eirh 003ch ill 003dh ilh 003eh pswl 003fh pswh note 1: do not access reserved areas by the program. note 2: ? ; cannot be accessed. note 3: write-only registers and interrupt latches cannot use the read-modify-write instructions (bit manipulation instructions such as set, clr, etc. and logical operation instructions such as and, or, etc.). TMP88F846UG 4. special function register 4.1 sfr page 40
4.2 dbr address pmd ch read write 1f80h ? 1f81h ? 1f82h ? 1f83h p3ode 1f84h p4ode 1f85h ? 1f86h ? 1f87h ? 1f88h ? 1f89h p3cr 1f8ah p4cr 1f8bh ? 1f8ch p6cr 1f8dh ? 1f8eh ? 1f8fh ? 1f90h ? 1f91h uartsr uartcra 1f92h ? uartcrb 1f93h rdbuf tdbuf 1f94h ? atas 1f95h ? atkey 1f96h ? siocr1 1f97h siosr siocr2 1f98h siobr0 1f99h siobr1 1f9ah siobr2 1f9bh siobr3 1f9ch siobr4 1f9dh siobr5 1f9eh siobr6 1f9fh siobr7 1fa0h for pmd ch.1 pdcra 1fa1h for pmd ch.1 pdcrb 1fa2h for pmd ch.1 pdcrc ? 1fa3h for pmd ch.1 sdreg 1fa4h for pmd ch.1 mtcra 1fa5h for pmd ch.1 mtcrb 1fa6h for pmd ch.1 mcapl ? 1fa7h for pmd ch.1 mcaph ? 1fa8h for pmd ch.1 cmp1l 1fa9h for pmd ch.1 cmp1h 1faah for pmd ch.1 cmp2l 1fabh for pmd ch.1 cmp2h 1fach for pmd ch.1 cmp3l 1fadh for pmd ch.1 cmp3h 1faeh for pmd ch.1 mdcra 1fafh for pmd ch.1 mdcrb TMP88F846UG page 41
address pmd ch read write 1fb0h for pmd ch.1 emgcra 1fb1h for pmd ch.1 emgcrb 1fb2h for pmd ch.1 mdoutl 1fb3h for pmd ch.1 mdouth 1fb4h for pmd ch.1 mdcntl ? 1fb5h for pmd ch.1 mdcnth ? 1fb6h for pmd ch.1 mdprdl 1fb7h for pmd ch.1 mdprdh 1fb8h for pmd ch.1 cmpul 1fb9h for pmd ch.1 cmpuh 1fbah for pmd ch.1 cmpvl 1fbbh for pmd ch.1 cmpvh 1fbch for pmd ch.1 cmpwl 1fbdh for pmd ch.1 cmpwh 1fbeh for pmd ch.1 dtr 1fbfh for pmd ch.1 ? emgrel 1fc0h for pmd ch.1 edcra 1fc1h for pmd ch.1 edcrb 1fc2h for pmd ch.1 edsetl 1fc3h for pmd ch.1 edseth 1fc4h for pmd ch.1 eldegl 1fc5h for pmd ch.1 eldegh 1fc6h for pmd ch.1 ampl 1fc7h for pmd ch.1 amph 1fc8h for pmd ch.1 edcapl ? 1fc9h for pmd ch.1 edcaph ? 1fcah for pmd ch.1 ? wfmdr 1fcbh ? 1fcch vdcr1 1fcdh vdcr2 1fceh reserved to : 1ffdh reserved 1ffeh spcr 1fffh flscr note 1: do not access reserved areas by the program. note 2: ? ; cannot be accessed. note 3: write-only registers and interrupt latches cannot use the read-modify-write instructions (bit manipulation instructions such as set, clr, etc. and logical operation instructions such as and, or, etc.). TMP88F846UG 4. special function register 4.2 dbr page 42
5. input/output ports the TMP88F846UG contains 5 input/output ports comprised of 33 pins. primary function secondary functions port p1 6-bit i/o port external interrupt input, timer/counter input/output, divider output port p2 3-bit i/o port external interrupt input, timer/counter input/output, stop mode release sig- nal input port p3 8-bit i/o port motor control input/output port p4 8-bit i/o port timer/counter output, serial interface input/output, motor control circuit in- put, serial prom mode control input port p6 8-bit i/o port analog input and motor control circuit output all output ports contain a latch, and the output data therefore are retained by the latch. but none of the input ports have a latch, so it is desirable that the input data be retained externally until it is read out, or read several times before being processed. figure 5-1 shows input/output timing. the timing at which external data is read in from input/output ports is s1 state in the read cycle of instruction execution. because this timing cannot be recognized from the outside, transient input data such as chattering needs to be dealt with in a program. the timing at which data is forwarded to input/output ports is s2 state in the write cycle of instruction execution. note:the read/write cycle positions vary depending on instructions. figure 5-1 example of input/output timing TMP88F846UG page 43 
                           ! "! #! $!  ! "! #! $!  ! "! #! $ 
   %                    &    ! "! #! $!  ! "! #! $!  ! "! #! $   '  % '
when an operation is performed for read from any input/output port except programmable input/output ports, whether the input value of the pin or the content of the output latch is read depends on the instruction executed, as shown below. 1. instructions which read the content of the output latch - xch r, (src) - set/clr/cpl (src).b - set/clr/cpl (pp).g - ld (src).b, cf - ld (pp).b, cf - xch cf, (src). b - add/addc/sub/subb/and/or/xor (src), n - add/addc/sub/subb/and/or/xor (src), (hl) instructions, the (src) side thereof - mxor (src), m 2. instructions which read the input value of the pin any instructions other than those listed above and add/addc/sub/subb/and/or/xor (src),(hl) instructions, the (hl) side thereof TMP88F846UG 5. input/output ports page 44
5.1 port p1 (p15 to p10) port p1 is an 6-bit input/output port shared with external interrupt input, timer/counter input/output, and divider output. this port is switched between input and output modes using the p1 port input/output control register (p1cr). when reset, the p1cr register is initialized to 0, with the p1 port set for input mode. also, the output latch (p1dr) is initialized to 0 when reset. figure 5-2 port p1 p1 port input/output register p1dr (00001h) 7 6 5 4 3 2 1 0 p15 p14 ppg1 p13 dvo p12 int2 tc1 p11 int1 p10 int0 read/write (initial value: **00 0000) p1cr (0000bh) 7 6 5 4 3 2 1 0 (initial value: **00 0000) p1cr p1 port input/output control (specify bitwise) 0: input mode 1: output mode r/w note 1: when a read instruction is excuted on p1 port, indeterminate values are read in from bits 7 to 6. note 2: *: dont care TMP88F846UG page 45  
            
      

   

5.2 port p2 (p22 to p20) port p2 is a 3-bit input/output port shared with external interrupt input and stop mode release signal. when using this port as these functional pins or an input port, set the output latch to 1. when reset, the output latch is initialized to 1. we recommend using the p20 pin as external interrupt input, stop mode release signal input, or input port. when using this port as an output port, note that the interrupt latch is set by a falling edge of output pulse. and note that outputs on this port during stop mode go to a high-impedance state even if syscr1 is set "1" , because p20 port is also used as stop pin. when a read instruction is executed on p2 port, indeterminate values are read in from bits 7 to 3. when any read-modify-write instruction is executed on p2 port, the content of the output latch is read out. when any other instruction is executed, the external pin state is read out. figure 5-3 port p2 p2 port input/output registers p2dr (00002h) 7 6 5 4 3 2 1 0 p22 tc4 int4 pwm4 pdo4 p21 tc3 int3 p20 int5 stop read/write (initial value: **** *111) note 1: when a read instruction is executed on p2 port, indeterminate values are read in from bits 7 to 3. note 2: port p20 is used as stop pin. therefore, when stop mode is started, sycr1 does not affect to p20, and p20 becomes high-z mode. note 3: *: dont care TMP88F846UG 5. input/output ports 5.2 port p2 (p22 to p20) page 46   
  

             
5.3 port p3 (p37 to p30) port p3 is an 8-bit input/output port. this port is switched between input and output modes using the p3 port input/ output control register (p3cr). when reset, the p3cr register is initialized to 0, with the p3 port set for input mode. also, the output latch (p3dr) is initialized to 0 when reset. the p3 port contains bitwise programmable open-drain control. the p3 port open-drain control register (p3ode) is used to select open-drain or tri-state mode for the port. when reset, the p3ode register is initialized to 0, with tri- state mode selected for the port. figure 5-4 port p3 p3 port input/output registers p3dr (00003h) 7 6 5 4 3 2 1 0 p37 cl1 p36 emg1 p35 u1 p34 v1 p33 w1 p32 x1 p31 y1 p30 z1 read/write (initial value: 0000 0000) p3cr (01f89h) 7 6 5 4 3 2 1 0 (initial value: 0000 0000) p3cr p3 port input/output control (specify bitwise) 0: input mode 1: output mode r/w p3ode (01f83h) 7 6 5 4 3 2 1 0 (initial value: 0000 0000) p3ode p3 port open-drain control (specify bitwise) 0: tri-state 1: open drain r/w note 1: even when open-drain mode is selected, the protective diode remains connected. therefore, do not apply voltages ex- ceeding v dd . note 2: read-modify-write (rmw) operation executes at open-drain mode is selected, read out the output latch states. when any other instruction is executed, external pin states is read out. note 3: for pmd circuit output, set the p3dr output latch to 1. note 4: when using p3 port as an input/output port, disable the emg1 circuit. TMP88F846UG page 47  
            
              
5.4 port p4 (p47 to p40) port p4 is an 8-bit input/output port shared with serial interface input/output and serial prom mode control in- put. this port is switched between input and output modes using the p4 port input/output control register (p4cr). when reset, the p4cr register is initialized to 0, with the p4 port set for input mode. also, the output latch (p4dr) is initialized to 0 when reset. the p4 port contains bitwise programmable open-drain control. the p4 port open-drain control register (p4ode) is used to select open-drain or tri-state mode for the port. when reset, the p4ode register is initialized to 0, with tri- state mode selected for the port. figure 5-5 port p4 p4 port input/output registers p4dr (00004h) 7 6 5 4 3 2 1 0 p47 ctc p46 ppg2 p45 so txd p44 si rxd boot p43 sck p42 pdu1 p41 pdv1 p40 pdw1 (initial value: 0000 0000) p4cr (01f8ah) 7 6 5 4 3 2 1 0 (initial value: 0000 0000) p4cr p4 port input/output control (specify bitwise) 0: input mode 1: output mode r/w p4ode (01f84h) 7 6 5 4 3 2 1 0 (initial value: 0000 0000) p4ode p4 port open-drain control (specify bitwise) 0: tri-state 1: open drain r/w note 1: even when open-drain mode is selected, the protective diode remains connected. therefore, do not apply voltages ex- ceeding v dd . note 2: read-modify-write (rmw) operation executes at open-drain mode is selected, read out the output latch states. when any other instruction is executed, external pin states is read out. note 3: when using the ctc 16-bit timer (ctc) as an ordinary timer, set p47 (ctc) for output mode. TMP88F846UG 5. input/output ports 5.4 port p4 (p47 to p40) page 48  
            
              
5.5 port p6 (p67 to p60) port p6 is an 8-bit input/output port shared with ad converter analog input. this port is switched between input and output modes using the p6 port input/output control register (p6cr), p6 port output latch (p6dr), and adc- cra. when reset, the p6cr register and the p6dr output latch are initialized to 0 while adc- cra is set to 1, so that p67 to p60 have their inputs fixed low ( = 0). when using the p6 port as an input port, set the corresponding bits for input mode (p6cr = 0, p6dr = 1). the reason why the output latch = 1 is because it is necessary to prevent current from flowing into the shared data input circuit. when using the port as an output port, set the p6cr register's corresponding bits to 1. when using the port for analog input, set the corresponding bits for analog input (p6cr = 0, p6dr = 0). then set adccra = 0, and ad conversion will start. the ports used for analog input must have their output latches set to 0 beforehand. the actual input channels for ad conversion are selected using adccra. although the bits of p6 port not used for analog input can be used as input/output ports, do not execute output instructions on these ports during ad conversion. this is necessary to maintain the accuracy of ad conversion. also, do not apply rapidly changing signals to ports adjacent to analog input during ad conversion. if an input instruction is executed while the p6dr output latch is cleared to 0, data 0 is read in from said bits. figure 5-6 port p6 p6 port input/output registers p6dr (00006h) 7 6 5 4 3 2 1 0 p67 ain7 dbout1 p66 ain6 p65 ain5 p64 ain4 p63 ain3 p62 ain2 p61 ain1 p60 ain0 read/write (initial value: 0000 0000) p6cr (01f8ch) 7 6 5 4 3 2 1 0 (initial value: 0000 0000) p6cr p6 port input/output control (specify bitwise) ainds = 1 (when not using ad) ainds = 0 (when using ad) r/w p6dr = 0 p6dr = 1 p6dr = 0 p6dr = 1 0 inputs fixed to 0 input mode analog input mode (note2) input mode 1 output mode note 1: the pins used for analog input cannot be set for output mode (p6cr = 1) because they become shorted with external signals. note 2: when a read instruction is executed on bits of this port which are set for analog input mode, data "0" is read in. note 3: for dbout1 output, set the p6dr (p67) output latch to 1. TMP88F846UG page 49 data input (p6) data output (p6) stop ainds sain p6cri p6cri input p6i note 1: i = 7 to 0 note 2: stop exists in syscr1 register bit 7 note 3: sain selects ad input channels. dq dq analog input
note 4: when using this port in input mode (including analog input), do not use bit manipulating or other read-modify-write in- structions. when a read instruction is executed on the bits of this port that are set for input, the contents of the pins are read in, so that if a read-modify-write instruction is executed, their output latches may be rewritten, making the pins unable to accept input. (a read-modify-write instruction first reads data from all of the eight bits and after modifying them (bit manipulation), writes data for all of the eight bits to the output latches.) TMP88F846UG 5. input/output ports 5.5 port p6 (p67 to p60) page 50
6. power-on reset circuit the power-on reset circuit generates a reset when the TMP88F846UG is powered on. it also generates a power-on reset signal if the supply voltage drops below the detection voltage of the power-on reset circuit. 6.1 configuration the power-on reset circuit is comprised of a reference voltage generator and a comparator. the comparator compares the supply voltage divided by a resistor ladder with the reference voltage generated by the reference voltage generator. figure 6-1 power-on reset circuit 6.2 function when the TMP88F846UG is powered on, the power-on reset circuit generates a power-on reset signal while the supply voltage is below the power-on reset release voltage. the power-on reset signal is released when the supply voltage rises above the power-on reset release voltage. when the TMP88F846UG is shut off, the power-on reset circuit generates a power-on reset signal when the supply voltage drops below the power-on reset detection voltage. while the power-on reset signal is generated, the warm-up counter circuit, cpu and peripheral circuits are reset. upon release of the power-on reset signal, the warm-up counter circuit starts operating. after the warm-up time has elapsed, the cpu and peripheral circuits are released from the reset state. after the supply voltage reaches the power-on reset release voltage level, it must be raised to the operating range before the power-on warm-up time expires. if the supply voltage is not in the operating range at the completion of the power-on warm-up time, the TMP88F846UG cannot operate properly. TMP88F846UG page 51 vdd reference detection voltage power on reset signal ? + comparator
note 1: the power-on reset circuit may not operate properly depending on transitions in supply voltage (v dd ). when designing your application system, careful consideration must be given to ensure proper operation of the power-on reset circuit by referring to the device's electrical characteristics. note 2: the input clock to the warm-up counter is derived from the oscillation circuit. because the oscillation frequency is unstable until the oscillation circuit stabilizes, the warm-up time includes error. note 3: the supply voltage must be raised to satisfy the condition t vdd < t pwup . figure 6-2 operation timing of the power-on reset circuit TMP88F846UG 6. power-on reset circuit 6.2 function page 52 supply voltage (vdd) vproff operating voltage vpron vdd ppw pron warm-up counter start pwup proff power-on reset signal warm-up counter clock cpu/peripheral circuits reset signal
7. voltage detection circuit (vltd) the voltage detecting circuit monitors the supply voltage level and generates an interrupt or reset upon detection of a low-voltage condition. note:the voltage detection circuit may not operate properly depending on transitions in supply voltage (vdd). when designing your application system, careful consideration must be given to ensure proper operation of the voltage detection circuit by referring to the device's electrical characteristics. 7.1 configuration the voltage detection circuit is comprised of a reference voltage generator, a detection voltage select circuit, a comparator and two control registers. the supply voltage (vdd) is divided by the ladder resistor and input to the detection voltage select circuit. the detection voltage select circuit selects a voltage according to the specified detection voltage (vd1lvl), and the comparator compares it with the reference voltage. when the comparator detects the selected voltage, a voltage de- tection reset signal or an intvltd interrupt request signal can be generated. whether to generate a voltage detection reset signal or an intvltd interrupt request signal can be programmed by software. in the former case, a voltage detection reset signal is generated when the supply voltage (vdd) becomes lower than the detection voltage (vd1lvl). in the latter case, an intvltd interrupt request signal is generated when the supply voltage (vdd) falls to the detection voltage level. note:since the comparators used for voltage detection do not have a hysteresis structure, intvltd interrupt request signals may be generated frequently if the supply voltage (vdd) is close to the detection voltage (vdxlvl). intvltd interrupt request signals may be generated not only when the supply voltage falls to the detection voltage but also when it rises to the detection voltage. figure 7-1 voltage detection circuit diagram note:in the "development tool" of this device, since operation of the voltage detection circuit is not supported, even if it detects the set-up voltage, interrupt is not generated. please check using a real device about actual operation. TMP88F846UG page 53 vdd vd1en vd1mod vd1lvl vd1sf vd1f vdcr2 vdcr1 voltage detection 1 reset signal intvltd interrupt request signal f/f internal bus detection voltage 1 select circuit reference voltage interrupt request signal ? +
7.2 control the voltage detection circuit is controlled by the voltage detect control register 1 and voltage detect control register 2. voltage detection control register1 vdcr1 7 6 5 4 3 2 1 0 (1fcch) 0 0 0 1 vd1f vd1sf vd1lvl (initial: 0*10 0000) vd1f voltage detection 1 flag (vddTMP88F846UG 7. voltage detection circuit (vltd) 7.2 control page 54
7.3 function the voltage detection circuit allows detection voltage level to be specified. the detection voltage, whether to enable or disable voltage detect operation and the action to be taken when the supply voltage (vdd) falls to or below the detection voltage (vd1lvl) can be programmed by software. 7.3.1 enabling/disabling voltage detection operation setting the vdcr2 bit to 1 enables voltage detect operation and clearing this bit to 0 disables it. immediately after release of a power-on reset,vdcr2, is cleared to 0. note:setting vdcr2 to 1 while the supply voltage is below the detection voltage (vdd < vd1lvl) immediately causes an intvltd interrupt or a voltage detect x reset signal to be generated. 7.3.2 selecting the voltage detect operating mode when vdcr2 is set to "0", the voltage detection operation mode is set to generate intvltd interrupt request signals. when vdcr2 is set to "1", the operation mode is set to generate voltage detection reset signals. ? when the operation mode is set to generate intvltd interrupt signals (vdcr2="0") when vdcr2="1", an intvltd interrupt request signal is generated when the supply voltage (vdd) falls to the detection voltage (vd1lvl). figure 7-2 voltage detection internal request note:since the comparators used for voltage detection do not have a hysteresis structure, intvltd interrupt request signals may be generated frequently when the supply voltage (vdd) is close to the detection voltage (vd1lvl). intvltd interrupt request signals may be generated not only when the supply voltage falls to the detection voltage but also when it rises to the detection voltage. ? when the operation mode is set to generate voltage detection reset signals (vdcr2="1") when vdcr2 = "1", a voltage detection reset signal is generated when the supply voltage (vdd) becomes lower than the detection voltage (vd1lvl). vdcr1 and vdcr2 are initialized by a power-on reset or an external reset input only. a voltage detection reset signal is generated continuously as long as the supply voltage (vdd) is lower than the detection voltage (vdxlvl). TMP88F846UG page 55 voltage detection level vdd level intvltd interruptrequest signal (note) vdcr2 (note)
figure 7-3 voltage detection reset signal 7.3.3 detection voltage level section the detection voltage level is selected by programming the vdcr1 bits. 7.3.4 voltage detection flag and voltage detection status flag the voltage detect flag (vdcr1) and voltage detect status flag (vdcr1) indicate the relation between the supply voltage (vdd) and the detection voltage (vd1lvl), i.e, whether vdd is above or equal to vd1lvl or vdd is below vd1lvl. when vdcr2=1, a drop of the supply voltage (vdd) below the detection voltage (vd1lvl) causes the vdcr1 flag to be set. this flag remains set until it is cleared by software. vdcr1 is not cleared to 0 when the supply voltage (vdd) becomes equal to or higher than the detection voltage (vd1lvl). once vdcr1 has been set to 1, this state is retained even if vdcr2 is cleared to 0. vdcr1 can only be cleared by writing a 0. when vdcr2=1, a drop of the supply voltage (vdd) below the detection voltage (vd1lvl) also causes the vdcr1 flag to be set to 1. when vdd rises above vd1lvl, the vdcr1 flag is cleared to 0. unlike the vdcr1 flag, the vdcr1 flag does not remain set and changes its state ac- cording to the relation between vdd and vd1lvl. note:depending on the voltage detect timing, the voltage detect status flag (vdcr1) may be set one machine cycle before the voltage detect flag (vdcr1) is set. figure 7-4 change of voltage detection flag and voltage detection status flag TMP88F846UG 7. voltage detection circuit (vltd) 7.3 function page 56 vdd level detection voltage level vdcr2 vdcr1 vdcr1 write "0" to vdcr1 the flag is not set because vdcr2 is "0" voltage detection level vdd level voltage detection reset signal vdcr2
7.4 setting of register 7.4.1 setting procedure for generate an interrupt the following shows the setting procedure for generating an intvltd interrupt upon detection of a low- voltage condition. 1. clear the intvltd interrupt enable flag to 0. 2. select the detection voltage by programming the vdcr1 bits. 3. clear the vdcr2 bit to 0 to generate an intvltd interrupt upon detection of a low- voltage condition. 4. set the vdcr2 bit to 1 to enable voltage detect operation. 5. wait for 5 s until the voltage detection circuit stabilizes. 6. ensure that the vdcr1 is 0. 7. clear the intvltd interrupt latch to 0 and set the interrupt enable flag to 1 to enable interrupts. note:when the supply voltage (vdd) is close to the detection voltage (vd1lvl), voltage detection request signals may be generated frequently. if this may pose any problem, execute appropriate wait processing depending on fluctuations in the system power supply and clear the interrupt latch before returning from the intvltd interrupt service routine. to disable the voltage detection circuit while it is enabled with the intvltd interrupt request, make the following setting: 1. clear the intvltd interrupt enable flag to 0. 2. clear the vdcr2 bit to 0 to disable voltage detect operation. note:if the voltage detection circuit is disabled without clearing intvltd interrupt enable flag , unex- pected interrupt request may occur. TMP88F846UG page 57
7.4.2 setting procedure to generate a reset the following shows the setting procedure for generating a voltage detect 1 reset signal upon detection of a low-voltage condition. 1. clear the intvltd interrupt enable flag to 0. 2. select the detection voltage by programming the vdcr1 bits. 3. clear the vdcr2 bit to 0 to generate an intvltd interrupt upon detection of a low- voltage condition. 4. set the vdcr2 bit to 1 to enable voltage detect operation. 5. wait for 5 s until the voltage detection circuit stabilizes. 6. ensure that the vdcr1 bit is 0. 7. clear the vdcr1 bit to 0. 8. set the vdcr2 bit to 1 to generate a voltage detect x reset signal upon detection of a low- voltage condition. note 1: the vdcr1 and vdcr2 are only initialized by a power-on reset or an external reset input. therefore, at the time when a low-voltage detect reset is released, if the supply voltage (vdd) is found to be below the detection voltage (vd1lvl) before vdcr2 is cleared to 0, a voltage detect reset will immediately be gen- erated. note 2: the voltage detect reset signal remains asserted while the supply voltage (vdd) is below the detection voltage (ld1lvl). to disable the voltage detection circuit while it is enabled with the voltage detection reset, make the following setting: 1. clear the intvltd interrupt enable flag to 0. 2. clear the vdcr2 bit to 0 to generate an intvltd interrupt upon detection of a low- voltage condition. 3. clear the vdcr2 bit to 0 to disable the voltage detect operation. note:if the voltage detection circuit is disabled without clearing intvltd interrupt enable flag , unex- pected interrupt request may occur. TMP88F846UG 7. voltage detection circuit (vltd) 7.4 setting of register page 58
8. time base timer (tbt) and divider output ( dvo) 8.1 time base timer the time base timer generates time base for key scanning, dynamic displaying, etc. it also provides a time base timer interrupt (inttbt). an inttbt ( time base timer interrupt ) is generated on the first falling edge of source clock ( the divider output of the timing generator which is selected by tbtck. ) after time base timer has been enabled. the divider is not cleared by the program; therefore, only the first interrupt may be generated ahead of the set interrupt period ( figure 8-2 ). the interrupt frequency (tbtck) must be selected with the time base timer disabled (tbten="0"). (the interrupt frequency must not be changed with the disable from the enable state.) both frequency selection and enabling can be performed simultaneously. figure 8-1 time base timer configuration figure 8-2 time base timer interrupt example :set the time base timer frequency to fc/2 16 [hz] and enable an inttbt interrupt. ld (tbtcr) , 00000010b ; tbtck 010 (freq. set) ld (tbtcr) , 00001010b ; tbten 1 (tbt enable) di set (eirl) . 6 ei TMP88F846UG page 59 source clock enable tbt interrupt period tbtcr inttbt interrupt request fc/2 23 ,fc/2 24 fc/2 21 ,fc/2 22 fc/2 16 ,fc/2 17 fc/2 14 ,fc/2 15 fc/2 13 ,fc/2 14 fc/2 12 ,fc/2 13 fc/2 11 ,fc/2 12 fc/2 9 ,fc/2 10 tbtcr tbten tbtck 3 mpx source clock falling edge detector time base timer control register inttbt interrupt request
time base timer is controled by time base timer control register (tbtcr). time base timer control register 7 6 5 4 3 2 1 0 tbtcr (00036h) (dvoen) (dvock) 0 tbten tbtck (initial value: 0000 0000) tbten time base timer enable / disable 0: disable 1: enable tbtck time base timer interrupt frequency select : [hz] normal, idle mode r/w dv1ck=0 dv1ck=1 000 fc/2 23 fc/2 24 001 fc/2 21 fc/2 22 010 fc/2 16 fc/2 17 011 fc/2 14 fc/2 15 100 fc/2 13 fc/2 14 101 fc/2 12 fc/2 13 110 fc/2 11 fc/2 12 111 fc/2 9 fc/2 10 note 1: fc; high-frequency clock [hz], *; don't care note 2: always set "0" in bit4 on tbtcr register. table 8-1 time base timer interrupt frequency ( example : fc = 20.0 mhz ) tbtck time base timer interrupt frequency [hz] normal, idle mode dv1ck = 0 dv1ck = 1 000 2.38 1.20 001 9.53 4.78 010 305.18 153.50 011 1220.70 610.35 100 2441.40 1220.70 101 4882.83 2441.40 110 9765.63 4882.83 111 39063.00 19531.25 TMP88F846UG 8. time base timer (tbt) 8.1 time base timer page 60
8.2 divider output ( dvo) approximately 50% duty pulse can be output using the divider output circuit, which is useful for piezoelectric buzzer drive. divider output is from dvo pin. figure 8-3 divider output the divider output is controlled by the time base timer control register (tbtcr). time base timer control register 7 6 5 4 3 2 1 0 tbtcr (00036h) dvoen dvock "0" (tbten) (tbtck) (initial value: 0000 0000) dvoen divider output enable / disable 0: disable 1: enable r/w dvock divider output ( dvo) frequency selection: [hz] normal, idle mode r/w dv1ck=0 dv1ck=1 00 fc/2 13 fc/2 14 01 fc/2 12 fc/2 13 10 fc/2 11 fc/2 12 11 fc/2 10 fc/2 11 note 1: selection of divider output frequency (dvock) must be made while divider output is disabled (dvoen="0"). also, in other words, when changing the state of the divider output frequency from enabled (dvoen="1") to disable(dvoen="0"), do not change the setting of the divider output frequency. note 2: in case of using dvo output, set output mode by p1cr register after setting the related port output latch to "1" by p1dr register. note 3: fc; high-frequency clock [hz], *; don't care note 4: be sure to write "0" to tbtcr register bit 4. example : 2.44 khz pulse output (fc = 20.0 mhz) port setting ld (tbtcr) , 00000000b ; dvock "00" ld (tbtcr) , 10000000b ; dvoen "1" TMP88F846UG page 61 tbtcr output latch port output latch mpx dvoen tbtcr dvo pin output dvock divider output control register (a) configuration (b) timing chart data output 2 a b c y d s d q dvo pin fc/2 13 ,fc/2 14 fc/2 12 ,fc/2 13 fc/2 11 ,fc/2 12 fc/2 10 ,fc/2 11
table 8-2 divider output frequency ( example : fc = 20.0 mhz ) dvock divider output frequency [hz] normal, idle mode dv1ck=0 dv1ck=1 00 2.4415 k 1.22075 k 01 4.8825 k 2.4415 k 10 9.765 k 4.8825 k 11 19.5325 k 9.765 k TMP88F846UG 8. time base timer (tbt) 8.2 divider output ( dvo) page 62
9. watchdog timer (wdt) the watchdog timer is a fail-safe system to detect rapidly the cpu malfunctions such as endless loops due to spurious noises or the deadlock conditions, and return the cpu to a system recovery routine. the watchdog timer signal for detecting malfunctions can be programmed only once as reset request or pseudo non-maskable interrupt request. upon the reset release, this signal is initialized to reset request. when the watchdog timer is not used to detect malfunctions, it can be used as the timer to provide a periodic interrupt. note:care must be taken in system design since the watchdog timer functions are not be operated completely due to effect of disturbing noise. 9.1 watchdog timer configuration figure 9-1 watchdog timer configuration TMP88F846UG page 63 0034 h overflow wdt output internal reset binary counters wdtout writing clear code writing disable code wdten wdtt 2 0035 h watchdog timer control registers wdtcr1 wdtcr2 intwdt interrupt request interrupt request reset request reset release clock clear 1 2 controller q sr s r q selector fc/2 23 ,fc/2 24 fc/2 21 ,fc/2 22 fc/2 19 ,fc/2 20 fc/2 17 ,fc/2 18
9.2 watchdog timer control the watchdog timer is controlled by the watchdog timer control registers (wdtcr1 and wdtcr2). the watchdog timer is automatically enabled after the reset release. 9.2.1 malfunction detection methods using the watchdog timer the cpu malfunction is detected, as shown below. 1. set the detection time, select the output, and clear the binary counter. 2. clear the binary counter repeatedly within the specified detection time. if the cpu malfunctions such as endless loops or the deadlock conditions occur for some reason, the watchdog timer output is activated by the binary-counter overflow unless the binary counters are cleared. when wdtcr1 is set to 1 at this time, the reset request is generated and then internal hardware is initialized. when wdtcr1 is set to 0, a watchdog timer interrupt (intwdt) is generated. the watchdog timer temporarily stops counting in the stop mode including the warm-up or idle mode, and automatically restarts (continues counting) when the stop/idle mode is inactivated. note:the watchdog timer consists of an internal divider and a two-stage binary counter. when the clear code 4eh is written, only the binary counter is cleared, but not the internal divider. the minimum binary-counter overflow time, that depends on the timing at which the clear code (4eh) is written to the wdtcr2 register, may be 3/4 of the time set in wdtcr1. therefore, write the clear code using a cycle shorter than 3/4 of the time set to wdtcr1. example :setting the watchdog timer detection time to 2 21 /fc [s], and resetting the cpu malfunction detection ld (wdtcr2), 4eh : clears the binary counters. ld (wdtcr1), 00001101b : wdtt 10, wdtout 1 ld (wdtcr2), 4eh : clears the binary counters (always clears immediately before and after changing wdtt). within 3/4 of wdt detection time : : ld (wdtcr2), 4eh : clears the binary counters. within 3/4 of wdt detection time : : ld (wdtcr2), 4eh : clears the binary counters. TMP88F846UG 9. watchdog timer (wdt) 9.2 watchdog timer control page 64
watchdog timer control register 1 wdtcr1 (0034h) 7 6 5 4 3 2 1 0 wdten wdtt wdtout (initial value: **** 1001) wdten watchdog timer enable/disable 0: disable (writing the disable code to wdtcr2 is required.) 1: enable write only wdtt watchdog timer detection time [s] normal mode write only dv1ck = 0 dv1ck = 1 00 2 25 /fc 2 26 /fc 01 2 23 /fc 2 24 /fc 10 2 21 fc 2 22 fc 11 2 19 /fc 2 20 /fc wdtout watchdog timer output select 0: interrupt request 1: reset request write only note 1: after clearing wdtcr1 to 0, the program cannot set it to 1. note 2: fc: high-frequency clock [hz], *: dont care note 3: wdtcr1 is a write-only register and must not be used with any of read-modify-write instructions. if wdtcr1 is read, a unknown data is read. note 4: to activate the stop mode, disable the watchdog timer or clear the counter immediately before entering the stop mode. after clearing the counter, clear the counter again immediately after the stop mode is inactivated. note 5: to clear wdtcr1, set the register in accordance with the procedures shown in 9.2.3 watchdog timer dis- able. note 6: if the watchdog timer is disabled during watchdog timer interrupt processing, the watchdog timer interrupt will never be cleared. therefore, clear the watchdog timer ( set the clear code (4eh) to wdtcr2 ) before disabling it, or disable the watchdog timer a sufficient time before it overflows. note 7: the watchdog timer consists of an internal divider and a two-stage binary counter. when clear code (4eh) is written, only the binary counter is cleared, not the internal divider. depending on the timing at which clear code (4eh) is written on the wdtcr2 register, the overflow time of the binary counter may be at minimum 3/4 of the time set in wdtcr1. thus, write the clear code using a shorter cycle than 3/4 of the time set in wdtcr1. watchdog timer control register 2 wdtcr2 (0035h) 7 6 5 4 3 2 1 0 (initial value: **** ****) wdtcr2 write watchdog timer control code 4eh: clear the watchdog timer binary counter (clear code) b1h: disable the watchdog timer (disable code) others: invalid write only note 1: the disable code is valid only when wdtcr1 = 0. note 2: *: dont care note 3: the binary counter of the watchdog timer must not be cleared by the interrupt task. note 4: write the clear code (4eh) using a cycle shorter than 3/4 of the time set in wdtcr1. note 5: wdtcr2 is a write-only register and must not be used with any of read-modify-write instructions. if wdtcr2 is read, a unknown data is read. 9.2.2 watchdog timer enable setting wdtcr1 to 1 enables the watchdog timer. since wdtcr1 is initialized to 1 during reset, the watchdog timer is enabled automatically after the reset release. TMP88F846UG page 65
9.2.3 watchdog timer disable to disable the watchdog timer, set the register in accordance with the following procedures. setting the register in other procedures causes a malfunction of the microcontroller. 1. set the interrupt master flag (imf) to 0. 2. set wdtcr2 to the clear code (4eh). 3. set wdtcr1 to 0. 4. set wdtcr2 to the disable code (b1h). note:while the watchdog timer is disabled, the binary counters of the watchdog timer are cleared. example :disabling the watchdog timer di : imf 0 ld (wdtcr2), 04eh : clears the binary counter ldw (wdtcr1), 0b101h : wdten 0, wdtcr2 disable code ei : imf 1 table 9-1 watchdog timer detection time (example: fc = 20 mhz) wdtt watchdog timer detection time[s] normal mode dv1ck = 0 dv1ck = 1 00 1.678 3.355 01 419.430 m 838.861 m 10 104.858 m 209.715 m 11 26.214 m 52.429 m note:if the watchdog timer is disabled during watchdog timer interrupt processing, the watchdog timer interrupt will never be cleared. therefore, clear the watchdog timer ( set the clear code (4eh) to wdtcr2 ) before disabling it, or disable the watchdog timer a sufficient time before it overflows. 9.2.4 watchdog timer interrupt (intwdt) when wdtcr1 is cleared to 0, a watchdog timer interrupt request (intwdt) is generated by the binary-counter overflow. a watchdog timer interrupt is the non-maskable interrupt which can be accepted regardless of the interrupt master flag (imf). when a watchdog timer interrupt is generated while the other interrupt including a watchdog timer interrupt is already accepted, the new watchdog timer interrupt is processed immediately and the previous interrupt is held pending. therefore, if watchdog timer interrupts are generated continuously without execution of the retn instruction, too many levels of nesting may cause a malfunction of the microcontroller. to generate a watchdog timer interrupt, set the stack pointer before setting wdtcr1. example :setting watchdog timer interrupt ld sp, 02bfh : sets the stack pointer ld (wdtcr1), 00001000b : wdtout 0 TMP88F846UG 9. watchdog timer (wdt) 9.2 watchdog timer control page 66
9.2.5 watchdog timer reset when a binary-counter overflow occurs while wdtcr1 is set to 1, a watchdog timer reset request is generated. when a watchdog timer reset request is generated, the internal hardware is reset. the reset time is maximum 24/fc [s] ( max. 1.2 s @ fc = 20 mhz). figure 9-2 watchdog timer interrupt and reset TMP88F846UG page 67 clock binary counter overflow intwdt interrupt request (wdtcr1= "0") 2 17 /fc 2 19 /fc [s] (wdtt=11b) write 4e h to wdtcr2 1 2 30 1 2 3 0 internal reset (wdtcr1= "1") a reset occurs
TMP88F846UG 9. watchdog timer (wdt) 9.2 watchdog timer control page 68
10. 16-bit timercounter 1 (tc1) 10.1 configuration figure 10-1 timercounter 1 (tc1) 10.2 timercounter control TMP88F846UG page 69 :::? pin tc1 :w:?::? mett1 start capture clear source clock ppg output mode write to tc1cr 16-bit up-counter clear tc1drb selector tc1dra tc1cr tc1 control register match inttc1 interript tff1 acap1 tc1ck window mode set toggle q 2 toggle set clear q y a d b c s b a y s tc1s clear mppg1 ppg output mode internal reset s enable mcap1 s y a b tc1s 2 set clear command start decoder external trigger start edge detector note: function i/o may not operate depending on i/o port setting. for more details, see the chapter "i/o port". port (note) q pulse width measurement mode falling rising trigger external cmp 16-bit timer register a, b pulse width measurement mode port (note) fc/2 11 , fc/2 12 fc/2 7 , fc/2 8 fc/2 3 , fc/2 4
the timercounter 1 is controlled by the timercounter 1 control register (tc1cr) and two 16-bit timer registers (tc1dra and tc1drb). timer register 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 tc1dra (0011h, 0010h) tc1drah (0011h) tc1dral (0010h) (initial value: 1111 1111 1111 1111) read/write tc1drb (0013h, 0012h) tc1drbh (0013h) tc1drbl (0012h) (initial value: 1111 1111 1111 1111) read/write (write enabled only in the ppg output mode) timercounter 1 control register tc1cr (000fh) 7 6 5 4 3 2 1 0 tff1 acap1 mcap1 mett1 mppg1 tc1s tc1ck tc1m read/write (initial value: 0000 0000) tff1 timer f/f1 control 0: clear 1: set r/w acap1 auto capture control 0 : auto-capture disable 1 : auto-capture enable r/w mcap1 pulse width measurement mode control 0 :double edge capture 1 : single edge capture r/w mett1 external trigger timer mode control 0 : trigger start 1 : trigger start and stop mppg1 ppg output control 0 : continuous pulse generation 1 : one-shot tc1s tc1 start control timer extrig- ger event win- dow pulse ppg r/w 00: stop and counter clear o o o o o o 01: command start o - - - - o 10: rising edge start (ex-trigger/pulse/ppg) rising edge count (event) positive logic count (window) - o o o o o 11: falling edge start (ex-trigger/pulse/ppg) falling edge count (event) negative logic count (window) - o o o o o tc1ck tc1 source clock select [hz] normal, idle mode r/w dv1ck = 0 dv1ck = 1 00 fc/2 11 fc/2 12 01 fc/2 7 fc/2 8 10 fc/2 3 fc/2 4 11 external clock (tc1 pin input) tc1m tc1 operating mode se- lect 00: timer/external trigger timer/event counter mode 01: window mode 10: pulse width measurement mode 11: ppg (programmable pulse generate) output mode r/w note 1: fc: high-frequency clock [hz] note 2: the timer register consists of two shift registers. a value set in the timer register becomes valid at the rising edge of the first source clock pulse that occurs after the upper byte (tc1drah and tc1drbh) is written. therefore, write the lower byte and the upper byte in this order (it is recommended to write the register with a 16-bit access instruction). writing only the lower byte (tc1dral and tc1drbl) does not enable the setting of the timer register. note 3: to set the mode, source clock, ppg output control and timer f/f control, write to tc1cr during tc1cr=00. set the timer f/f1 control until the first timer start after setting the ppg mode. note 4: auto-capture can be used only in the timer, event counter, and window modes. TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.2 timercounter control page 70
note 5: to set the timer registers, the following relationship must be satisfied. tc1dra > tc1drb > 1 (ppg output mode), tc1dra > 1 (other modes) note 6: set tc1cr to 0 in the mode except ppg output mode. note 7: set tc1drb after setting tc1cr to the ppg output mode. note 8: when the stop mode is entered, the start control (tc1cr) is cleared to 00 automatically, and the timer stops. after the stop mode is exited, set the tc1cr to use the timer counter again. note 9: use the auto-capture function in the operative condition of tc1. a captured value may not be fixed if it's read after the execution of the timer stop or auto-capture disable. read the capture value in a capture enabled condition. note 10: since the up-counter value is captured into tc1drb by the source clock of up-counter after setting tc1cr to "1". therefore, to read the captured value, wait at least one cycle of the internal source clock before reading tc1drb for the first time. TMP88F846UG page 71
10.3 function timercounter 1 has six types of operating modes: timer, external trigger timer, event counter, window, pulse width measurement, programmable pulse generator output modes. 10.3.1 timer mode in the timer mode, the up-counter counts up using the internal clock. when a match between the up-counter and the timer register 1a (tc1dra) value is detected, an inttc1 interrupt is generated and the up-counter is cleared. after being cleared, the up-counter restarts counting. setting tc1cr to 1 captures the up- counter value into the timer register 1b (tc1drb) with the auto-capture function. use the auto-capture function in the operative condition of tc1. a captured value may not be fixed if it's read after the execution of the timer stop or auto-capture disable. read the capture value in a capture enabled condition. since the up-counter value is captured into tc1drb by the source clock of up-counter after setting tc1cr to "1". therefore, to read the captured value, wait at least one cycle of the internal source clock before reading tc1drb for the first time. table 10-1 source clock for timercounter 1 (example: fc = 20 mhz) tc1ck normal, idle mode dv1ck = 0 dv1ck = 1 resolution [s] maximum time setting [s] resolution [s] maximum time setting [s] 00 102.4 6.7108 204.8 13.4216 01 6.4 0.4194 12.8 0.8388 10 0.5 26.214 m 0.8 52.428 m example 1 :setting the timer mode with source clock fc/2 11 [hz] and generating an interrupt 1 second later (fc = 20 mhz, cgcr = 0) ldw (tc1dra), 2625h ; sets the timer register (1 s 2 11 /fc = 2625h) di ; imf= 0 set (eird). 2 ; enables inttc1 ei ; imf= 1 ld (tc1cr), 00000000b ; selects the source clock and mode ld (tc1cr), 00010000b ; starts tc1 example 2 :auto-capture ld (tc1cr), 01010000b ; acap1 1 : : ; wait at least one cycle of the internal source clock ld wa, (tc1drb) ; reads the capture value TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 72
figure 10-2 timer mode timing chart TMP88F846UG page 73 match detect acap1 tc1drb tc1dra inttc1 interruput request source clock counter source clock counter ? (a) timer mode (b) auto-capture ? 7 6 345 0 timer start 12 3 2 1 4 0 counter clear capture n + 1 n n n m + 2 m + 1 m m capture m + 2 m + 1 n + 1 n m ? 1 m ? 1 m ? 2 n ? 1 n ? 1 n ? 1
10.3.2 external trigger timer mode in the external trigger timer mode, the up-counter starts counting by the input pulse triggering of the tc1 pin, and counts up at the edge of the internal clock. for the trigger edge used to start counting, either the rising or falling edge is defined in tc1cr. ? when tc1cr is set to 1 (trigger start and stop) when a match between the up-counter and the tc1dra value is detected after the timer starts, the up-counter is cleared and halted and an inttc1 interrupt request is generated. if the edge opposite to trigger edge is detected before detecting a match between the up-counter and the tc1dra, the up-counter is cleared and halted without generating an interrupt request. therefore, this mode can be used to detect exceeding the specified pulse by interrupt. after being halted, the up-counter restarts counting when the trigger edge is detected. ? when tc1cr is set to 0 (trigger start) when a match between the up-counter and the tc1dra value is detected after the timer starts, the up-counter is cleared and halted and an inttc1 interrupt request is generated. the edge opposite to the trigger edge has no effect in count up. the trigger edge for the next counting is ignored if detecting it before detecting a match between the up-counter and the tc1dra. since the tc1 pin input has the noise rejection, pulses of 4/fc [s] or less are rejected as noise. a pulse width of 12/fc [s] or more is required to ensure edge detection. example 1 :generating an interrupt 1 ms after the rising edge of the input pulse to the tc1 pin (fc = 20 mhz, cgcr = 1) ldw (tc1dra), 007dh ; 1ms 2 7 /fc = 7dh di ; imf= 0 set (eird). 2 ; enables inttc1 interrupt ei ; imf= 1 ld (tc1cr), 00001000b ; selects the source clock and mode ld (tc1cr), 00111000b ; starts tc1 external trigger, mett1 = 0 example 2 :generating an interrupt when the low-level pulse with 4 ms or more width is input to the tc1 pin (fc = 20 mhz, cgcr = 1) ldw (tc1dra), 0138h ; 4 ms 2 8 /fc = 0138h di ; imf= 0 set (eird). 2 ; enables inttc1 interrupt ei ; imf= 1 ld (tc1cr), 00000100b ; selects the source clock and mode ld (tc1cr), 01110100b ; starts tc1 external trigger, mett1 = 0 TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 74
figure 10-3 external trigger timer mode timing chart TMP88F846UG page 75 inttc1 interrupt request source clock up-counter tc1dra tc1 pin input inttc1 interrupt request source clock up-counter tc1dra tc1 pin input 0 at the rising edge (tc1s = 10) at the rising edge (tc1s = 10) (a) trigger start (mett1 = 0) count start match detect count start 0 1 2 3 4 2 3 n (b) trigger start and stop (mett1 = 1) count start count start 0 1 2 3 m 0 n n 0 count clear note: m < n count clear 1 2 3 1 n m ? 1 n ? 1 match detect count clear
10.3.3 event counter mode in the event counter mode, the up-counter counts up at the edge of the input pulse to the tc1 pin. either the rising or falling edge of the input pulse is selected as the count up edge in tc1cr. when a match between the up-counter and the tc1dra value is detected, an inttc1 interrupt is generated and the up-counter is cleared. after being cleared, the up-counter restarts counting at each edge of the input pulse to the tc1 pin. since a match between the up-counter and the value set to tc1dra is detected at the edge opposite to the selected edge, an inttc1 interrupt request is generated after a match of the value at the edge opposite to the selected edge. two or more machine cycles are required for the low-or high-level pulse input to the tc1 pin. setting tc1cr to 1 captures the up-counter value into tc1drb with the auto capture function. use the auto-capture function in the operative condition of tc1. a captured value may not be fixed if it's read after the execution of the timer stop or auto-capture disable. read the capture value in a capture enabled condition. since the up-counter value is captured into tc1drb by the source clock of up-counter after setting tc1cr to "1". therefore, to read the captured value, wait at least one cycle of the internal source clock before reading tc1drb for the first time. figure 10-4 event counter mode timing chart table 10-2 input pulth width to tc1 pin minimum pulse width [s] normal, idle mode high-going 2 3 /fc low-going 2 3 /fc TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 76 at the rising edge (tc1s = 10) inttc1 interrput request tc1 pin input up-counter tc1dra ? 2 1 0 n timer start 2 1 0 n match detect counter clear n ? 1
10.3.4 window mode in the window mode, the up-counter counts up at the rising edge of the pulse that is logical anded product of the input pulse to the tc1 pin (window pulse) and the internal source clock. either the positive logic (count up during high-going pulse) or negative logic (count up during low-going pulse) can be selected. when a match between the up-counter and the tc1dra value is detected, an inttc1 interrupt is generated and the up-counter is cleared. define the window pulse to the frequency which is sufficiently lower than the internal source clock programmed with tc1cr. figure 10-5 window mode timing chart TMP88F846UG page 77 match detect tc1dra inttc1 interrput request interrput request internal clock counter tc1dra tc1 pin input internal clock counter tc1 pin input inttc1 (a) positive logic (tc1s = 10) (b) negative logic (tc1s = 11) ? ? match detect 1 0 7 47 5 46 31 2 1 0 7 5 3 6 2 0 2 3 counter clear timer start 890 1 9 timer start counte r clear count start count stop count start count start count stop count start
10.3.5 pulse width measurement mode in the pulse width measurement mode, the up-counter starts counting by the input pulse triggering of the tc1 pin, and counts up at the edge of the internal clock. either the rising or falling edge of the internal clock is selected as the trigger edge in tc1cr. either the single- or double-edge capture is selected as the trigger edge in tc1cr. ? when tc1cr is set to 1 (single-edge capture) either high- or low-level input pulse width can be measured. to measure the high-level input pulse width, set the rising edge to tc1cr. to measure the low-level input pulse width, set the falling edge to tc1cr. when detecting the edge opposite to the trigger edge used to start counting after the timer starts, the up-counter captures the up-counter value into tc1drb and generates an inttc1 interrupt request. the up-counter is cleared at this time, and then restarts counting when detecting the trigger edge used to start counting. ? when tc1cr is set to 0 (double-edge capture) the cycle starting with either the high- or low-going input pulse can be measured. to measure the cycle starting with the high-going pulse, set the rising edge to tc1cr. to measure the cycle starting with the low-going pulse, set the falling edge to tc1cr. when detecting the edge opposite to the trigger edge used to start counting after the timer starts, the up-counter captures the up-counter value into tc1drb and generates an inttc1 interrupt request. the up-counter continues counting up, and captures the up-counter value into tc1drb and generates an inttc1 interrupt request when detecting the trigger edge used to start counting. the up-counter is cleared at this time, and then continues counting. note 1: the captured value must be read from tc1drb until the next trigger edge is detected. if not read, the captured value becomes a dont care. it is recommended to use a 16-bit access instruction to read the captured value from tc1drb. note 2: for the single-edge capture, the counter after capturing the value stops at 1 until detecting the next edge. therefore, the second captured value is 1 larger than the captured value immediately after counting starts. note 3: the first captured value after the timer starts may be read incorrectively, therefore, ignore the first captured value. TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 78
example :duty measurement (resolution fc/2 7 [hz], cgcr = 0) clr (inttc1sw). 0 ; inttc1 service switch initial setting ; address set to convert inttc1sw at each inttc1 ld (tc1cr), 00000110b ; sets the tc1 mode and source clock di ; imf= 0 set (eird). 2 ; enables inttc1 ei ; imf= 1 ld (tc1cr), 00100110b ; starts tc1 with an external trigger at mcap1 = 0 : pinttc1: cpl (inttc1sw). 0 ; inttc1 interrupt, inverts and tests inttc1 service switch jrs f, sinttc1 ld a, (tc1drbl) ; reads tc1drb (high-level pulse width) ld w,(tc1drbh) ld (hpulse), wa ; stores high-level pulse width in ram reti sinttc1: ld a, (tc1drbl) ; reads tc1drb (cycle) ld w,(tc1drbh) ld (width), wa ; stores cycle in ram : reti ; duty calculation : vinttc1: dw pinttc1 ; inttc1 interrupt vector TMP88F846UG page 79 width hpulse tc1 pin inttc1 interrupt request inttc1sw
figure 10-6 pulse width measurement mode TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 80 tc1drb inttc1 interrupt request interrupt request tc1 pin input counter internal clock (mcap1 = "1") 23 n count start count start trigger (tc1s = "10") 1 3 2 1 4 0 n 0 capture n - 1 tc1drb inttc1 tc1 pin input counter internal clock (mcap1 = "0") 12 n count start count start (tc1s = "10") 3 2 1 4 0 n capture capture n + 1 m - 2 n + 3 n + 2 n + 1 m - 1 m0 m [application] high-or low-level pulse width measurement [application] (1) cycle/frequency measurement (2) duty measurement (a) single-edge capture (b) double-edge capture
10.3.6 programmable pulse generate (ppg) output mode in the programmable pulse generation (ppg) mode, an arbitrary duty pulse is generated by counting performed in the internal clock. to start the timer, tc1cr specifies either the edge of the input pulse to the tc1 pin or the command start. tc1cr specifies whether a duty pulse is produced continuously or not (one- shot pulse). ? when tc1cr is set to 0 (continuous pulse generation) when a match between the up-counter and the tc1drb value is detected after the timer starts, the level of the ppg pin is inverted and an inttc1 interrupt request is generated. the up-counter continues counting. when a match between the up-counter and the tc1dra value is detected, the level of the ppg pin is inverted and an inttc1 interrupt request is generated. the up-counter is cleared at this time, and then continues counting and pulse generation. when tc1cr is cleared to 00 during ppg output, the ppg pin retains the level immedi- ately before the counter stops. ? when tc1cr is set to 1 (one-shot pulse generation) when a match between the up-counter and the tc1drb value is detected after the timer starts, the level of the ppg pin is inverted and an inttc1 interrupt request is generated. the up-counter continues counting. when a match between the up-counter and the tc1dra value is detected, the level of the ppg pin is inverted and an inttc1 interrupt request is generated. tc1cr is cleared to 00 automatically at this time, and the timer stops. the pulse generated by ppg retains the same level as that when the timer stops. since the output level of the ppg pin can be set with tc1cr when the timer starts, a positive or negative pulse can be generated. since the inverted level of the timer f/f1 output level is output to the ppg pin, specify tc1cr to 0 to set the high level to the ppg pin, and 1 to set the low level to the ppg pin. upon reset, the timer f/f1 is initialized to 0. note 1: to change tc1dra or tc1drb during a run of the timer, set a value sufficiently larger than the count value of the counter. setting a value smaller than the count value of the counter during a run of the timer may generate a pulse different from that specified. note 2: do not change tc1cr during a run of the timer. tc1cr can be set correctly only at initial- ization (after reset). when the timer stops during ppg, tc1cr can not be set correctly from this point onward if the ppg output has the level which is inverted of the level when the timer starts. (setting tc1cr specifies the timer f/f1 to the level inverted of the programmed value.) therefore, the timer f/f1 needs to be initialized to ensure an arbitrary level of the ppg output. to initialize the timer f/f1, change tc1cr to the timer mode (it is not required to start the timer mode), and then set the ppg mode. set tc1cr at this time. note 3: in the ppg mode, the following relationship must be satisfied. tc1dra > tc1drb note 4: set tc1drb after changing the mode of tc1m to the ppg mode. example :generating a pulse which is high-going for 800 s and low-going for 200 s (fc = 20 mhz, cgcr = 0) setting port ld (tc1cr), 10001011b ; sets the ppg mode, selects the source clock ldw (tc1dra), 04e2h ; sets the cycle (1 ms 2 4 /fc s = 04e2h) ldw (tc1drb), 00fah ; sets the low-level pulse width (200 s 2 4 /fc = 00fah) ld (tc1cr), 10010111b ; starts the timer TMP88F846UG page 81
figure 10-7 ppg output figure 10-8 ppg mode timing chart TMP88F846UG 10. 16-bit timercounter 1 (tc1) 10.3 function page 82 inttc1 tc1dra internal clock counter tc1drb tc1dra ppg pin output 0 inttc1 interrupt request interrupt request 12 m01 2 n m01 n 2 n n + 1 n + 1 m (a) continuous pulse generation (tc1s = 01) tc1drb trigger count start timer start counter internal clock tc1 pin input ppg pin output 0 1m n n n + 1 m 0 (b) one-shot pulse generation (tc1s = 10) match detect note: m > n note: m > n [application] one-shot pulse output q r d ppg pin function output port output enable i/o port output latch shared with ppg output data output toggle set clear q tc1cr write to tc1cr internal reset match to tc1drb match to tc1dra tc1cr clear timer f/f1 inttc1 interrupt request
11. 16-bit timer (ctc) 11.1 configuration figure 11-1 ctc block diagram TMP88F846UG page 83 ctc1cr2 ctc1cr1 3 2 2 2 3 3 toggle q set clear ? ctc1s ctc1sm ctc1se ctc1cy ctc1e ? rising edge falling edge s a y b ctc pin h a b c d y e s fc/2 11 or fc/2 12 fc/2 7 or fc/2 8 fc/2 5 or fc/2 6 fc/2 3 or fc/2 4 fc/2 2 or fc/2 3 fc/2 or fc/2 2 ctc1ck ctc1s ctc1res extrgdis ctc1reg ctc1ck ctc1ff0 ppgff0 ctc1m ctc1cy ctc1se ctc1e ctc1sm ctc1m ctc1ff0 ppgff0 ctc1m ctc1reg last coincidence interrupt stop trigger clear start start control read/write control and clear interrupt select write register select read register ctc1dra ctc1drb ctc1drc 16-bit up counter intctc1 interrupt ppg2 pin edge detection comparator extrgdis
11.2 control compare timer/counter 1 is controlled using compare timer/counter 1 control registers (ctc1cr1 and ctc1cr2), as well as three 16-bit timer registers (ctc1dra, ctc1drb, and ctc1drc). compare timer registers (ctc1drh: 00017h, ctc1drl: 00016h) ctc1dra 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 write only (initial value: ******** ********) ctc1drah ctc1dral ctc1drb 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 write only (initial value: ******** ********) ctc1drbh ctc1drbl ctc1drc 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 write only (initial value: ******** ********) ctc1drch ctc1drcl note:ctc1dra, ctc1drb, and ctc1drc are write-only registers and must not be used with any of the read-modify- write instructions such as set, clr, etc. compare timer/counter 1 control registers (ctc1cr2: 00015h, ctc1cr1: 00014h) ctc1cr1 lower address 7 6 5 4 3 2 1 0 r/w (initial value: 00000000) ctc1res ppgff0 ctc1m ctc1cy ctc1se ctc1e ctc1sm ctc1s ctc1cr2 upper address 7 6 5 4 3 2 1 0 r/w (initial value: *0000000) * ex- trgdis ctc1reg ctc1ck ctc1ff0 note 1: *: dont care note 2: the ctc1cr1 is 0 when read. note 3: use the ldw instruction for write to the ctc1dr h/l registers. set a value equal to or greater than 2. note 4: write to ctc1dr h/l a, b, and c registers as many as set with the ctc1cr2 register ctc1reg bit. note 5: data are written to ctc1dr h/l registers in order of ctc1dra, ctc1drb, and ctc1drc. TMP88F846UG 11. 16-bit timer (ctc) 11.2 control page 84
setting-up the ctc1cr1 register ctc1s control start 0: stop and clear counter 1: command start timer event ppg r/w ctc1sm select start 0: software start 1: external trigger start ctc1e select external trigger edge 0: enable one edge 1: enable both edges ctc1se select external trigger start edge 0: rising edge 1: falling edge ctc1cy select cycle 0: successive 1: one shot ctc1m set operation mode 0: timer/event counter modes 1: ppg (programmable pulse generator) output mode ppgff0 select ppg output 0: forward output immediately after start 1: reverse output immediately after start ctc1res reset all 0: normal operation 1: ctc1 reset setting-up the ctc1cr2 register ctc1ff0 control timer output f/f0 0: clear 1: set r/w ctc1ck select timer/counter clock source unit: hz normal and idle modes dv1ck = 0 dv1ck = 1 timer event ppg 000 fc/2 11 fc/2 12 ? 001 fc/2 7 fc/2 8 ? 010 fc/2 5 fc/2 6 ? 011 fc/2 3 fc/2 4 ? 100 fc/2 2 fc/2 3 ? note3 101 fc/2 fc/2 2 ? 110 ? ? 111 external clock input (ctc1 pin input) - ctc1reg set registers used by timer/ counter 00: ctc1dra 01: ctc1dra + ctc1drb 10: ctc1dra + ctc1drb + ctc1drc 11: reserved 1reg 2reg 3reg extrgdis external trigger input note4 0: enable external trigger input 1: disable external trigger input note 1: fc: clock [hz] note 2: make sure the timer/counter is idle (ctc1cr1 = 00) before setting operation mode, edge, start, source clock, external trigger timer mode control, and ppg output control. note 3: when dv1ck=1, ctc1cr2=100 cannot be used. note 4: when ctc1 input is not used in the ctc1 timer, external trigger input must be disabled (ctc1cr2 = 1) regardless of the selected mode. note 5: the ctc1drb and ctc1drc registers cannot be accessed for write unless they are set for ppg output mode and specified with ctc1cr2. note 6: ctc1cr1 is effective only when using an external clock as trigger (ctc1cr1). note 7: data must be written to as many data registers as set with ctc1cr2. note 8: to write data to ctc1dra/b/c, use the ldw instruction, or use the ld instruction writing in order of l, h. note 9: data register values must be written to the respective registers before starting. to modify the values after starting, write the new data within an interval from an intctc1 interrupt to the next intctc1. TMP88F846UG page 85
note 10: specifying ctc1cr1 = 1 causes all conditions to be reset. even when the ctc circuit is operating, they are reset, and the ppg output becomes 0. however, only the intctc1 signal is not reset if the signal is being generated. note 11: for event counter mode (when ctc pin input is selected in timer mode), the active edge of the external trigger to count can be selected with ctc1cr1. note 12: disabling external trigger input with ctc1cr2 creates the 0 input state. note 13: to stop the counter by software at trigger start, set ctc1cr2 = 00. note 14: the number of registers set and the values set in the timer registers must meet the conditions shown below. number of registers timer register value conditions ctc1reg 1 register ctc1dra 2 2 register ctc1drb > ctc1dra + 1, and ctc1dra 2 3 register ctc1drc > ctc1drb + 1, ctc1drb > ctc1dra + 1, and ctc1dra 2 TMP88F846UG 11. 16-bit timer (ctc) 11.2 control page 86
11.3 function compare timer/counter 1 has three modes: timer, event counter, and programmable pulse generator output modes. 11.3.1 timer mode with software start in this mode, the timer/counter (16-bit counter) counts up synchronously with the internal clock. when the counter value and the set value of compare timer register 1a (ctc1dra) match, an intctc1 interrupt is generated and the counter is cleared. after the counter is cleared, it restarts and continues counting up. table 11-1 internal clock source for compare timer/counter 1 (example: fc = 20 mhz) ctc1ck normal and idle modes dv1ck = 0 dv1ck = 1 resolution [s] maximum setting time [s] resolution [s] maximum setting time [s] 000 102.4 6.71 204.8 13.42 001 6.4 0.419 12.8 0.839 010 1.6 0.105 3.2 0.210 011 0.4 26.21 m 0.8 52.43 m 100 0.2 13.11 m 0.4 26.21 m 101 0.1 6.55 m 0.2 13.11 m 110 - - - - figure 11-2 timer mode timing chart note:if the ctc input port (p47) is set for input mode, the timer/counter is reset by an input edge on port. when using the timer/counter as an ordinary timer, set ctc1cr2 to 1 or set p47 for output mode. TMP88F846UG page 87 123 0 n n - 1 2 5 48 39 6 7 1 n timer register a internal clock counter intctc1 interrupt successive
11.3.2 timer mode with external trigger start in this timer mode, the timer/counter starts counting as triggered by input on ctc pin (rising or falling edge selected with ctc1cr1). the source clock is an internal clock. for successive cycles, when the counter value and the set value of the ctc1dra register match, an intctc1 interrupt is generated and the counter is cleared and then restarted. the counter is stopped by a trigger input on ctc pin and restarted by the next trigger input. for a one-shot cycle, when the counter value and the set value of the ctc1dra register match, an intctc1 interrupt is generated and the counter is cleared and stopped. the counter restarts counting up by input on ctc pin. when ctc1cr1 = 1, the counter is cleared and stops counting at an edge on ctc pin input opposite the active edge that triggers the counter to start counting. in this mode, an interrupt can be generated by entering a pulse which has a certain width. when ctc1cr1 = 0, opposite edges on ctc input are ignored. figure 11-3 external trigger mode timing chart TMP88F846UG 11. 16-bit timer (ctc) 11.3 function page 88 1 2 n - 1 022 11 n34 ctc pin input internal clock counter (i) when rising edge start is selected, with counting enabled on one edge ( ctc1se = 0, ctc1e = 0 ) timer register a count start count start stop intctc1 interrupt n successive clear trigger trigger trigge r 1 2 n - 1 036 05 n4 12 ctc pin input internal clock counter timer register a count start count start intctc1 interrupt n one shot stop trigger trigger t a) successive b) one  shot
figure 11-4 external trigger mode timing chart 11.3.3 event counter mode in this mode, the timer/counter counts up at the active edge on ctc pin input (rising or falling edge selected with the ctc1cr1 which is provided for selecting external trigger edge). when the counter value and the set value of the ctc1dra register match, an intctc1 interrupt is generated and the counter is cleared. after the counter is cleared, it restarts and continues counting up at each edge on ctc pin input. the maximum applied frequency is shown in the table below. because coincidence detection is made at an edge opposite the selected edge, the external clock signal on ctc pin must always be entered. figure 11-5 event counter mode timing chart TMP88F846UG page 89 1 0 2 1 n - 1 n 0 n timer register ctc pin input when rising start edge is selected counter command start intctc1 interrupt 12 00 1 n - 1 m13 2 n ctc pin input internal clock counter (ii) when rising start edge is selected, with counting enabled on both edges ( ctc1se = 0, ctc1e = 1 ) timer register a count start count stop count start intctc1 interrupt n successive trigger trigger trigger 12 0 3 0 2 n501 34 12 ctc pin input internal clock counter timer register a count start count clear count start intctc1 interrupt n one shot trigger trigger trigger note) m < n a) successive b) one shot
table 11-2 external clock source for compare timer/counter 1 normal and idle modes maximum applied frequency [hz] up to fc/2 2 minimum pulse width 2 2 /fc and over 11.3.4 programmable pulse generate (ppg) output mode the timer/counter starts counting as a command or edge on ctc pin input (rising/falling edge and one/both edges respectively selected with the ctc1cr1 and ctc1cr1). the source clock is an internal clock. when matched with the ctc1dr a/b/c registers, the timer output f/f corresponding to each mode is inverted. when matched with the ctc1dr a/b/c registers next time, the timer output f/f is inverted again. an intctc1 interrupt request is generated when the counter value matches the maximum register value set by ctc1cr2. the timer output f/f is cleared to 0 when reset. because ctc1cr2 can be used to set the initial value for the timer output f/f, an active-high or active-low pulse whichever is desired can be output. the ctc1drb and ctc1drc registers cannot be accessed for write unless they are set for ppg output mode and the registers used are selected with ctc1cr2. the number of registers set can be altered during operation. in this case, however, be sure to set the number of registers used and write values to the data registers before the next ctc1init1 is output after the first ctc1init1 output. even when only altering the data register values while leaving the number of registers unchanged, be sure to do this within the same period of time. table 11-3 internal clock source for compare timer/counter 1 (example: fc = 20 mhz) ctc1ck normal and idle modes dv1ck = 0 dv1ck = 1 resolution [s] maximum setting time [s] resolution [s] maximum setting time [s] 000 ? ? ? ? 001 ? ? ? ? 010 ? ? ? ? 011 ? ? ? ? 100 0.2 13.11 m ? ? 101 0.1 6.55 m 0.2 13.11m 110 ? ? ? ? note:when port p47 is set as a ctc input port, an edge input resets the timer/counter. when ppg output mode is selected and external trigger start is not used, set ctc1cr2 to "1" or set p47 as an output port. TMP88F846UG 11. 16-bit timer (ctc) 11.3 function page 90
figure 11-6 one register command start mode timing chart figure 11-7 two register one edge trigger start mode timing chart TMP88F846UG page 91 (ii) two registers used (ctc1reg = 01) when set to the external trigger rising edge start and the one edge enable. ctc pin input counter internal clock timer register a timer register b 1 m m+1 m m+1 1 n 0 intctc1 interrupt start stop m n ppg2 pin output 1 2 0 n successive initial value ctc pin input counter internal clock timer register a timer register b 1 m m+1 0 n 0 intctc1 interrupt start start m n ppg2 pin output 1 one shot a) successive b) one shot (i) one register used (ctc1reg = 00) when set to command start. ctc pin input counter timer register a 11 1 n n 0 intctc1 interrupt command start n ppg2 pin output 1 n 1 2 3 n successive
figure 11-8 two register both edges trigger start mode timing chart TMP88F846UG 11. 16-bit timer (ctc) 11.3 function page 92 when set to the external trigger rising edge start and the both edges enable. ctc pin input counter internal clock timer register a timer register b 1 m m+1 m 1 n 0 intctc1 interrupt start start stop m n ppg2 pin output 1 0 successive initial value ctc pin input counter internal clock timer register a timer register b 1 m m+1 mn m+1 0 11 n 2 00 0 intctc1 interrupt start m n ppg2 pin output m 1 m+1 0 one shot start start start a) successive b) one shot
note:in the single-shot mode, the ppg pin output is not toggled at the last register match; it stays at the value specified with ctc1cr2. figure 11-9 three register command start mode timing chart TMP88F846UG page 93 (iii)  three registers used (ctc1reg = 10)  when set to command start. ctc pin input counter timer register a timer register b 1 m m+1 s n+1 n 0 intctc1 interrupt command start m n timer register c s ppg2 pin output m+1 m n 1 successive ctc pin input counter timer register a timer register b 1 1 m m m+1 s n+1 n 0 intctc1 interrupt command start command restart m n timer register c s ppg2 pin output m+1 0 one shot a) successive b) one shot
detail operation at start that varies depending on how ctc1cr2 and ctc1cr1 are set during ppg output. table 11-4 varying ppg output timing depending on settings ctc1ff0 = 0 ppgff0 = 0 ctc1ff0 = 1 ppgff0 = 0 ctc1ff0 = 0 ppgff0 = 1 ctc1ff0 = 1 ppgff0 = 1 by changing the port-shared output for ppg output before the counter starts counting after setting ctc1cr2, it is possible to determine the initial value of ppg output. TMP88F846UG 11. 16-bit timer (ctc) 11.3 function page 94 1 0 2 n n + 1 n + 3 n + 2 3 internal clock counter ppg output ctc1ff0 setting (write to ctc1cr1 register) command start or trigger start 1 0 2 n n + 1 n + 3 n + 2 3 internal clock counter ppg output ctc1ff0 setting (write to ctc1cr1 register) command start or trigger start 1 0 2 n n + 1 n + 3 n + 2 3 internal clock counter ppg output ctc1ff0 setting (write to ctc1cr1 register) command start or trigger start 1 0 2 n n+1 n+3 n+2 3 internal clock counter ppg output ctc1ff0 setting (write to ctc1cr1 register) command start or trigger start
12. 8-bit timercounter 3 (tc3) 12.1 configuration note:function input may not operate depending on i/o port setting. for more details, see the chapter "i/o port". figure 12-1 timercounter 3 (tc3) TMP88F846UG page 95 tc3ck tc3s fc/2 13 , fc/2 14 fc/2 12 , fc/2 13 fc/2 11 , fc/2 12 fc/2 10 , fc/2 11 fc/2 9 , fc/2 , fc/2 9 , fc/2 8 3 source clock capture clear tc3s inttc3 interrupt tc3 contorol register 8-bit timer register overflow detect h a b c d e f g s tc3m tc3cr edge detector tc3drb tc3dra capture acap tc3s falling rising a y b s match detect y 8-bit up-counter tc3 pin port (note) cmp fc/2 8 fc/2 7 10
12.2 timercounter control the timercounter 3 is controlled by the timercounter 3 control register (tc3cr) and two 8-bit timer registers (tc3dra and tc3drb). timer register and control register tc3dra (001ch) 7 6 5 4 3 2 1 0 read/write (initial value: 1111 1111) tc3drb (001dh) read only (initial value: 1111 1111) tc3cr (001eh) 7 6 5 4 3 2 1 0 acap tc3s tc3ck tc3m (initial value: *0*0 0000) acap auto capture control 0: - 1: auto capture r/w tc3s tc3 start control 0: stop and counter clear 1: start r/w tc3ck tc3 source clock select [hz] normal, idle mode r/w dv1ck=0 dv1ck=1 000 fc/2 13 fc/2 14 001 fc/2 12 fc/2 13 010 fc/2 11 fc/2 12 011 fc/2 10 fc/2 11 100 fc/2 9 fc/2 10 101 fc/2 8 fc/2 9 110 fc/2 7 fc/2 8 111 external clock (tc3pin input) tc3m tc3 operating mode se- lect 0: timer/event counter mode 1: capture mode r/w note 1: fc: high-frequency clock [hz], *: dont care note 2: set the operating mode and source clock when timercounter stops (tc3cr = 0). note 3: to set the timer registers, the following relationship must be satisfied. tc3dra > 1 (timer/event counter mode) note 4: auto-capture (tc3cr) can be used only in the timer and event counter modes. note 5: when the read instruction is executed to tc3cr, the bit 5 and 7 are read as a dont care. note 6: do not program tc3dra when the timer is running (tc3cr = 1). note 7: when the stop mode is entered, the start control (tc3cr) is cleared to 0 automatically, and the timer stops. after the stop mode is exited, tc3cr must be set again to use the timer counter. TMP88F846UG 12. 8-bit timercounter 3 (tc3) 12.2 timercounter control page 96
12.3 function timercounter 3 has three types of operating modes: timer, event counter and capture modes. 12.3.1 timer mode in the timer mode, the up-counter counts up using the internal clock. when a match between the up-counter and the timer register 3a (tc3dra) value is detected, an inttc3 interrupt is generated and the up-counter is cleared. after being cleared, the up-counter restarts counting. setting tc3cr to 1 captures the up- counter value into the timer register 3b (tc3drb) with the auto-capture function. the count value during timer operation can be checked by executing the read instruction to tc3drb. note:00h which is stored in the up-counter immediately after detection of a match is not captured into tc3drb. (figure 12-2) figure 12-2 auto-capture function table 12-1 source clock for timercounter 3 (example: fc = 20 mhz) tc3ck normal, idle mode dv1ck = 0 dv1ck = 1 resolution [s] maximum time setting [ms] resolution [s] maximum time setting [ms] 000 409.6 104.45 819.2 208.90 001 204.8 52.22 409.6 104.45 010 102.4 26.11 204.8 52.22 011 51.2 13.06 102.4 26.11 100 25.6 6.53 51.2 13.06 101 12.8 3.06 25.6 6.53 110 6.4 1.63 12.8 3.06 TMP88F846UG page 97 tc3drb note: in the case that tc3drb is c8h clock up-counter match detect c7 c8 tc3dra c8 00 01 c7 c8 c6 c6 01
figure 12-3 timer mode timing chart TMP88F846UG 12. 8-bit timercounter 3 (tc3) 12.3 function page 98 match detect tc3cr tc3drb tc3dra inttc3 interrupt source clock counter source clock counter (a) timer mode (b) auto capture ? ? 7 6 3 4 5 0 n timer start 1 2 3 2 1 4 0 n counter clear capture n + 1 n m + 2 m + 1 m m capture m + 2 m + 1 n + 1 n
12.3.2 event counter mode in the event counter mode, the up-counter counts up at the rising edge of the input pulse to the tc3 pin. when a match between the up-counter and tc3dra value is detected, an inttc3 interrupt is generated and up-counter is cleared. after being cleared, the up-counter restarts counting at each rising edge of the input pulse to the tc3 pin. since a match is detected at the falling edge of the input pulse to tc3 pin, an inttc3 interrupt request is generated at the falling edge immediately after the up-counter reaches the value set in tc3dra. the maximum applied frequencies are shown in table 12-2. the pulse width larger than one machine cycle is required for high-going and low-going pulses. setting tc3cr to 1 captures the up-counter value into tc3drb with the auto-capture function. the count value during a timer operation can be checked by the read instruction to tc3drb. note:00h which is stored in the up-counter immediately after detection of a match is not captured into tc3drb. (figure 12-2) example :inputting 50 hz pulse to tc3, and generating interrupts every 0.5 s ld (tc3cr), 00001110b : sets the clock mode ld (tc3dra), 19h : 0.5 s 1/50 = 25 = 19h ld (tc3cr), 00011110b : starts tc3. table 12-2 maximum frequencies applied to tc3 minimum pulse width normal, idle mode high-going 2 2 /fc low-going 2 2 /fc figure 12-4 event counter mode timing chart TMP88F846UG page 99 n inttc3 interrupt tc3 pin input counter tc3dra match detect counter clear timer start 0 1 2 3 n 0 1 2 3
12.3.3 capture mode in the capture mode, the pulse width, frequency and duty cycle of the pulse input to the tc3 pin are measured with the internal clock. the capture mode is used to decode remote control signals, and identify ac50/60 hz. when the falling edge of the tc3 input is detected after the timer starts, the up-counter value is captured into tc3drb. hereafter, whenever the rising edge is detected, the up-counter value is captured into tc3dra and the inttc3 interrupt request is generated. the up-counter is cleared at this time. generally, read tc3drb and tc3dra during inttc3 interrupt processing. after the up-counter is cleared, counting is continued and the next up-counter value is captured into tc3drb. when the rising edge is detected immediately after the timer starts, the up-counter value is captured into tc3dra only, but not into tc3drb. the inttc3 interrupt request is generated. when the read instruction is executed to tc3drb at this time, the value at the completion of the last capture (ff immediately after a reset) is read. the minimum input pulse width must be larger than one cycle width of the source clock programmed in tc3cr. the inttc3 interrupt request is generated if the up-counter overflow (ffh) occurs during capture operation before the edge is detected. tc3dra is set to ffh and the up-counter is cleared. counting is continued by the up-counter, but capture operation and overflow detection are stopped until tc3dra is read. generally, read tc3drb first because capture operation and overflow detection resume by reading tc3dra. figure 12-5 capture mode timing chart TMP88F846UG 12. 8-bit timercounter 3 (tc3) 12.3 function page 100 read of tc3dra source clock counter tc3dra tc3 pin input tc3drb inttc3 interrupt request i fe 2 3 1 0 1 k-1 1 capture capture capture capture capture m ff (overflow) k n 0 ff tc3cr i i+1 i-1 0 k m m+1 m-1 n-1 0 n 2 1 3 internal waveform fe overflow timer start
13. 8-bit timercounter 4 (tc4) 13.1 configuration figure 13-1 timercounter 4 (tc4) TMP88F846UG page 101 pwm output mode clear 3 2 source clock 8-bit up-counter overflow detect toggle clear timer f/f match detect s y 0 1 y s s 1 0 y pdo mode port (note) ::?:?:? (note) a b c d e f g h y s cmp note: function i/o may not operate depending on i/o port setting. for more details, see the chapter "i/o port". tc4cr tc4dr inttc4 interrupt tc4s tc4s tc4s tc4m tc4ck tc4 pin pwm4 / pdo4 / pin fc/2 11 , fc2 12 fc/2 7 , fc2 8 fc/2 5 , fc2 6 fc/2 3 , fc2 4 fc/2 2 , fc2 3 fc/2, fc2 2 fc, fc/2
13.2 timercounter control the timercounter 4 is controlled by the timercounter 4 control register (tc4cr) and timer registers 4 (tc4dr). timer register and control register tc4dr (001bh) 7 6 5 4 3 2 1 0 read/write (initial value: 1111 1111) tc4cr (001ah) 7 6 5 4 3 2 1 0 tc4s tc4ck tc4m read/write (initial value: **00 0000) tc4s tc4 start control 0: stop and counter clear 1: start r/w tc4ck tc4 source clock select [hz] normal, idle mode r/w dv1ck = 0 dv1ck = 1 000 fc/2 11 fc/2 12 001 fc/2 7 fc/2 8 010 fc/2 5 fc/2 6 011 fc/2 3 fc/2 4 100 fc/2 2 fc/2 3 101 fc/2 2 110 (fc) note8 (fc/2) note8 111 external clock (tc4 pin input) tc4m tc4 operating mode se- lect 00: timer/event counter mode 01: reserved 10: programmable divider output (pdo) mode 11: pulse width modulation (pwm) output mode r/w note 1: fc: high-frequency clock [hz], *: dont care note 2: to set the timer registers, the following relationship must be satisfied. 1 tc4dr 255 note 3: to start timer operation (tc4cr = 0 1) or disable timer operation (tc4cr = 1 0), do not change the tc4cr setting. during timer operation (tc4cr = 1 1), do not change it, either. if the setting is programmed during timer operation, counting is not performed correctly. note 4: the event counter and pwm output modes are used only in the nomal and idle modes. note 5: when the stop mode is entered, the start control (tc4s) is cleared to 0 automatically. note 6: the bit 6 and 7 of tc4cr are read as a dont care when these bits are read. note 7: in the timer, event counter and pdo modes, do not change the tc4dr setting when the timer is running. note 8: when the high-frequency clock fc exceeds 10 mhz, do not select the source clock of tc4cr< tc4ck> = 110. note 9: for available source clocks depending on the operation mode, refer to the following table. tc4ck timer mode event counter mode pdo mode pwm mode 000 o ? o ? 001 o ? o ? 010 o ? o ? 011 o ? ? o 100 ? ? ? o 101 ? ? ? o 110 ? ? ? o 111 ? o ? note:o : available source clock TMP88F846UG 13. 8-bit timercounter 4 (tc4) 13.2 timercounter control page 102
13.3 function timercounter 4 has four types of operating modes: timer, event counter, programmable divider output (pdo), and pulse width modulation (pwm) output modes. 13.3.1 timer mode in the timer mode, the up-counter counts up using the internal clock. when a match between the up-counter and the tc4dr value is detected, an inttc4 interrupt is generated and the up-counter is cleared. after being cleared, the up-counter restarts counting. table 13-1 internal source clock for timercounter 4 (example: fc = 20 mhz) tc4ck normal, idle mode dv1ck = 0 dv1ck = 1 resolution [s] maximum time setting [ms] resolution [s] maximum time setting [ms] 000 102.4 26.11 204.8 52.22 001 6.4 1.63 12.8 3.28 010 1.6 0.41 3.2 0.82 011 0.4 0.10 0.8 0.20 13.3.2 event counter mode in the event counter mode, the up-counter counts up at the rising edge of the input pulse to the tc4 pin. when a match between the up-counter and the tc4dr value is detected, an inttc4 interrupt is generated and the up-counter is cleared. after being cleared, the up-counter restarts counting at rising edge of the tc4 pin. since a match is detected at the falling edge of the input pulse to the tc4 pin, the inttc4 interrupt request is generated at the falling edge immediately after the up-counter reaches the value set in tc4dr. the minimum pulse width applied to the tc4 pin are shown in table 13-2. the pulse width larger than two machine cycles is required for high- and low-going pulses. note:the event counter mode can used in the normal and idle modes only. table 13-2 external source clock for timercounter 4 minimum pulse width normal, idle mode high-going 2 3 /fc low-going 2 3 /fc 13.3.3 programmable divider output (pdo) mode the programmable divider output (pdo) mode is used to generated a pulse with a 50% duty cycle by counting with the internal clock. when a match between the up-counter and the tc4dr value is detected, the logic level output from the pdo4 pin is switched to the opposite state and inttc4 interrupt request is generated. the up-counter is cleared at this time and then counting is continued. when a match between the up-counter and the tc4dr value is detected, the logic level output from the pdo4 pin is switched to the opposite state again and inttc4 interrupt request is generated. the up-counter is cleared at this time, and then counting and pdo are continued. TMP88F846UG page 103
when the timer is stopped, the pdo4 pin is high. therefore, if the timer is stopped when the pdo4 pin is low, the duty pulse may be shorter than the programmed value. example :generating 1024 hz pulse (fc = 20.0 mhz and cgcr = 0) ld (tc4cr), 00000110b : sets the pdo mode. (tc4m = 10, tc4ck = 001) set (p2dr), 2 : sets the p22 output latch to 1. ld (tc4dr), 4ch : 1/1024 2 7 /fc 2 (half cycle period) = 4ch ld (tc4cr), 00100110b : start tc4 figure 13-2 pdo mode timing chart 13.3.4 pulse width modulation (pwm) output mode the pulse width modulation (pwm) output mode is used to generate the pwm pulse with up to 8 bits of resolution by an internal clock. when a match between the up-counter and the tc4dr value is detected, the logic level output from the pwm4 pin becomes low. the up-counter continues counting. when the up-counter overflow occurs, the pwm4 pin becomes high. the inttc4 interrupt request is generated at this time. when the timer is stopped, the pwm4 pin is high. therefore, if the timer is stopped when the pwm4 pin is low, one pmw cycle may be shorter than the programmed value. tc4dr is serially connected to the shift register. if tc4dr is programmed during pwm output, the data set to tc4dr is not shifted until one pwm cycle is completed. therefore, a pulse can be modulated periodically. for the first time, the data written to tc4dr is shifted when the timer is started by setting tc4cr to 1. note 1: the pwm output mode can be used only in the normal and idel modes. note 2: in the pwm output mode, program tc4dr immediately after the inttc4 interrupt request is generated (typically in the inttc4 interrupt service routine.) when the programming of tc4dr and the inttc4 interrupt occur at the same time, an unstable value is shifted, that may result in generation of pulse different from the programmed value until the next inttc4 interrupt request is issued. TMP88F846UG 13. 8-bit timercounter 4 (tc4) 13.3 function page 104 internal clock counter match detect 0 12 n 0 12 n 0 1 2 n 01 2 n 0 1 n tc4dr pdo4 pin inttc4 interrupt request timer f/f
figure 13-3 pwm output mode timing chart (tc4) table 13-3 pwm mode (example: fc = 20 mhz) tc4ck normal, idle mode dv1ck = 0 dv1ck = 1 resolution [ns] cycle [s] resolution [ns] cycle [s] 000 - - - - 001 - - - - 010 - - - - 011 400 102.4 800 204.8 100 200 51.2 400 102.4 101 100 25.6 200 51.2 110 - - - - TMP88F846UG page 105 internal clock shift register counter n 0 ? ? 1 n + 1 ff 0 1 n n + 1 ff 01 m pwm cycle match detect mp n n m data shift rewrite data shift match detect match detect data shift n n m rewrite rewrite pwm4 pin inttc4 interrupt request timer f/f tc4dr tc4cr
TMP88F846UG 13. 8-bit timercounter 4 (tc4) 13.3 function page 106
14. motor control circuit (pmd: programmable motor driver) the TMP88F846UG contains one channel of motor control circuits used for sinusoidal waveform output. this motor control circuit can control brushless dc motors or ac motors with or without sensors. with its primary functions like those listed below incorporated in hardware, it helps to accomplish sine wave motor control easily, with the software load significantly reduced. 1. rotor position detect function ? can detect the rotor position, with or without sensors ? can be set to determine the rotor position when detection matched a number of times, to prevent erroneous detection ? can set a position detection inhibit period immediately after pwm-on 2. independent timer and timer capture functions for motor control ? contains one-channel magnitude comparison timer and two-channel coincidence comparison timers that operate synchronously for position detection 3. pwm waveform generating function ? generates 12-bit pwm with 100 ns resolution ? can set a frequency of pwm interrupt occurrence ? can set the dead time at pwm-on 4. protective function ? provides overload protective function based on protection signal input 5. emergency stop function in case of failure ? can be made to stop in an emergency by emg input or timer overflow interrupt ? not easily cleared by software runaway 6. auto commutation/auto position detection start function ? comprised of dual-buffers, can activate auto commutation synchronously with position detection or timer ? can set a position detection period using the timer function and start auto position detection at the set time 7. electrical angle timer function ? can count 360 degrees of electrical angle with a set period in the range of 0 to 383 ? can output the counted electrical angle to the waveform arithmetic circuit 8. waveform arithmetic circuit ? calculate the output duty cycle from the sine wave data and voltage data which are read from the ram based on the electrical angle timer ? output the calculation result to the waveform synthesis circuit TMP88F846UG page 107
14.1 outline of motor control the following explains the method for controlling a brushless dc motor with sine wave drive. in a brushless dc motor, the rotor windings to which to apply electric current are determined from the rotors magnetic pole position, and the current-applied windings are changed as the rotor turns. the rotors magnetic pole position is determined using a sensor such as a hall ic or by detecting polarity change (zero-cross) points of the induced voltage that develops in the motor windings (sensorless control). for the sensorless case, the induced voltage is detected by applying electric current to two phases and not applying electric current to the remaining other phase. in this two-phase current on case, there are six current application patterns as shown in table 14-1, which are changed synchronously with the phases of the rotor. in this two-phase current on case, the current on time in each phase is 120 degrees relative to 180 degrees of the induced voltage. table 14-1 current application patterns current application pattern upper transistor lower transistor current on winding u v w x y z mode 0 on off off off on off uv mode 1 on off off off off on uw mode 2 off on off off off on vw mode 3 off on off on off off vu mode 4 off off on on off off wu mode 5 off off on off on off wv note:one of the upper or lower transistors is pwm controlled. for brushless dc motors, the number of revolutions is controlled by an applied voltage, and the voltage application is controlled by pwm. at this time, the current on windings need to be changed in synchronism with the phases of the voltage induced by revolutions. control timing in cases where the current on windings are changed by means of sensorless control is illustrated in figure 14-4. for three-phase motors, zero-crossing occurs six times during one cycle of the induced voltage (electrical angle 360 degrees), so that the electrical angle from one zero-cross point to the next is 60 degrees. assuming that this period comprises one mode, the rotor position can be divided into six modes by zero- cross points. the six current application patterns shown above correspond one for one to these six modes. the timing at which the current application patterns are changed (commutation) is out of phase by 30 degrees of electrical angle, with respect to the position detection by an induced voltage. mode time is obtained by detecting a zero-cross point at some timing and finding an elapsed time from the preceding zero-cross point. because mode time corresponds to 60 degrees of electrical angle, the following applies for the case illustrated in figure 14-4. 1. current on windings changeover (commutation) timing 30 degrees of electrical angle = mode time/2 2. position detection start timing 45 degrees of electrical angle = mode time 3/4 3. failure determination timing 120 degrees of electrical angle = mode time 2 timings are calculated in this way. the position detection start timing in 2 is needed to prevent erroneous detection of the induced voltage for reasons that even after current application is turned off, the current continues flowing due to the motor reactance. control is exercised by calculating the above timings successively for each of the zero-cross points detected six times during 360 degrees of electrical angle and activating commutation, position detection start, and other operations according to that timing. in this way, operations can be synchronized to the phases of the induced voltage of the motor. the timing needed for motor control as in this example can be set freely as desired by using the internal timers of the microcontrollers pmd unit. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.1 outline of motor control page 108
also, sine wave control requires controlling the pwm duty cycle for each pulse. control of pwm duty cycles is accomplished by counting degrees of electrical angle and calculating the sine wave data and voltage data at the counted degree of electrical angle. figure 14-1 conceptual diagram of dc motor control figure 14-2 example of sensorless dc motor control timing chart TMP88F846UG page 109      
    
                                  !      " # $%&'( #%$ '( &$ )$       
                     !  
"#  

 
$ 
 

 $
$  %$
& '& $$
 ( 
$   $ % 
)  &

14.2 configuration of the motor control circuit the motor control circuit consists of various units. these include a position detection unit to detect the zero-cross points of the induced voltage or position sensor signal, a timer unit to generate events at three instances of electrical angle timing, and a three-phase pwm output unit to produce three-phase output pwm waveforms. also included are an electrical angle timer unit to count degrees of electrical angle and a waveform arithmetic unit to calculate sinusoidal waveform output duty cycles. the input/output units are configured as shown in the diagram below. when using ports for the pmd function, set the port input/output control register (p3cri) to 0 for the input ports, and for the output ports, set the data output latch (p3i) to 1 and then the port input/output control register to 1. other input/output ports can be set in the same way for use of the pmd function. figure 14-3 block diagram of the motor control circuit note 1: always use the ldw instruction to set data in the 9, 12 and 16-bit data registers. note 2: the emg circuit initially is enabled. for pmd output, fix the emg input port (p36) "h" high level or disable the emg circuit before using for pmd output. note 3: the emg circuit initially is enabled. when using port p3 as input/output io ports, disable emg. note 4: when going to stop mode, be sure to turn all of the pmd functions off before entering stop mode. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.2 configuration of the motor control circuit page 110  


       
  
 
     


    
 
         

 

      ! 
14.3 position detection unit the position detection unit identifies the motor's rotor position from input patterns on the position signal input port. applied to this position signal input port is the voltage status of the motor windings for the case of sensorless dc motors or a hall element signal for the case of dc motors with sensors included. the expected patterns corre- sponding to specific rotor positions are set in the pmd output register (mdout) beforehand, and when the input position signal and the expected value match as the rotation, a position detection interrupt (intpdc) is generated. also, unmatch detection mode is used to detect the direction of motor rotation, where when the status of the position detection input port changes from the status in which it was at start of sampling, a position detection interrupt is generated. for three-phase brushless dc motors, there are six patterns of position signals, one for each mode, as summarized in table 14-2 from the timing chart in figure 14-2. once a predicted position signal pattern is set in the mdout register, a position detection interrupt is generated the moment the position signal input port goes to mode indicated by this expected value. the position signals at each phase in the diagram are internal signals which cannot be observed from the outside. table 14-2 position signal input patterns position detection mode u phase (pdu) v phase (pdv) w phase (pdw) mode 0 h l h mode 1 h l l mode 2 h h l mode 3 l h l mode 4 l h h mode 5 l l h TMP88F846UG page 111
14.3.1 configuration of the position detection unit figure 14-4 configuration of the position detection circuit ? the position detection unit is controlled by the position detection control register (pdcra, pdcrb). after the position detection function is enabled, the unit starts sampling the position detection port with timer 2 or in software. for the case of ordinary mode, when the status of the position detection input port matches the expected value of the pmd output register, the unit generates a position detection interrupt and finishes sampling, waiting for start of the next sampling. ? when unmatch detection mode is selected for position detection, the unit stores the sampled status of the position detection port in memory at the time it started sampling. when the port input status changes from the status in which it was at start of sampling, an interrupt is generated. ? in unmatch detection mode, the port status at start of sampling can be read (pdcrc). ? when starting and stopping position detection synchronously with the timer, position detection is started by timer 2 and position detection is stopped by timer 3. ? sampling mode can be selected from three modes available: mode where sampling is performed only while pwm is on, mode where sensors such as hall elements are sampled regularly, and mode where sampling is performed while the lower side is conducting current (when performing sampling only while pwm is on, duty must be set for all three phases in common). ? when sampling mode is selected for detecting position while the lower phases are conducting current, sampling is performed for a period from when the set sampling delay time has elapsed after the lower side started conducting current till when the current application is turned off. sampling is performed independently at each phase, and the sampling result is retained while sampling is idle. if while sampling at some phase is idle, the input and the expected value at other phase being sampled match, position is detected and an interrupt is generated. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.3 position detection unit page 112  

                 !  "    !  !# #   $##
%  &   $#     & & '  &  (            &      &       )& (      '* +,+-+ +%+
+.+/ /  0 .
% 1+ ,+ -+  2 %+
+ .+ / -+ 1+ , '+ +  !#
? a sampling delay is provided for use in modes where sampling is made while pwm is on or the lower phases are conducting current. it helps to prevent erroneous detection due to noise that occurs imme- diately after the transistor turns on, by starting sampling a set time after the pwm signal turned on. ? when detecting position while pwm is on or the lower phases are conducting current, a method can be selected whether to recount occurrences of matched position detection after being compared for each pwm signal on (logical sum of three-phase pwm signals) (e.g., starting from 0 in each pwm cycle) or counting occurrences of matching continuously ( pdcrb is used to enable/disable re- counting occurrences of matching while pwm is on). 14.3.2 position detection circuit register functions pdcrc 5, 4 emem hold result of position detec- tion at pwm edge (detect position detected po- sition) these bits hold the comparison result of position detection at falling or rising edge of pwm pulse. bits 5 and 4 are set to 1 when position is detected at the falling or the rising edge, respectively. they show whether position is detected in the current pwm pulse, during pwm off, or in the immediately preceding pwm pulse. 3 smon monitor sampling status when read, this bit shows the sampling status. 2 to 0 pdtct hold position signal input sta- tus this bit holds the status of the position signal input at the time position detection started in unmatch mode. pdcrb 7, 6 splck sampling period select fc/2 2 , fc/2 3 , fc/2 4 , or fc/2 5 for the position detection sampling period. 5, 4 splmd sampling mode select one of three modes: sampling only when pwm signal is active (when pwm is on), sampling regularly, or sampling when the lower side (x, y, z) phases are conducting cur- rent. 3 to 0 pdcmp sampling count in ordinary mode, when the port status and the set expected value match and continuously match as many times as the sampling counts set, a position detection signal is output and an interrupt is generated. in unmatch detection mode, when the said status and value do not match and continuously unmatch as many times as the sampling counts set, a position detection signal is output and an interrupt is generated. pdcra 7 swstp stop sampling in software sampling can be stopped in software by setting this bit to 1 (e.g., by writing to this register). sampling is performed before stopping and when position detection results match, a po- sition detection interrupt is generated, with sampling thereby stopped. 6 swstt start sampling in software sampling can be started by setting this bit to 1 (e.g., by writing to this register). 5 sptm3 stop sampling using timer 3 sampling can be stopped by a trigger from timer 3 by setting this bit to 1. sampling is performed before stopping and when position detection results match, a po- sition detection interrupt is generated, with sampling thereby stopped. 4 sttm2 start sampling using timer 2 sampling can be started by a trigger from timer 3 by setting this bit to 1. 3 pdnum number of position signal in- put pins select whether to use three pins (pdu/pdv/pdw) or one pin (pdu only) for position signal input. when one pin is selected, the expected values of pdv and pdw are ignored. when performing position detection with two pins or a pin other than pdu, position signal input can be masked as 0 by setting unused pin(s) for output. 2 rcen recount occurrences of matching when pwm is on when performing sampling while pwm is on, occurrences of matching are recounted each time pwm signal turns on by setting this bit to 1 (when recounting occurrences of matching, the count is reset each time pwm turns off). when this bit is set to 0, occurrences of matching are counted continuously regardless pwm interval. 1 dtmd position detection mode setting this bit to 0 selects ordinary mode where position is detected when the expected value set in the register and the port input unmatch and then match. setting this bit to 1 selects unmatch detection mode where position is detected at the time the port status changes to another one from the status in which it was when sampling started. 0 pdcen position detection function the position detection function is activated by setting this bit to 1. sdreg 6 to 0 sdreg sampling delay set a time for which to stop sampling in order to prevent erroneous detection due to noise that occurs immediately after pwm output turns on (immediately after the transistor turns on). (figure 14-5) TMP88F846UG page 113
figure 14-5 position detection sampling timing with the pwmon period selected figure 14-6 detection timing of the position detection position TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.3 position detection unit page 114     
                !  "# %    &         " '(  )  )    ) ) ) )) ) '** $     &  "     +,        $       # )) )  )      
                    !"#  $      
  $#% & "#   & "#  "' & "# 

position detection circuit registers [addresses (pmd1)] pdcrc (01fa2h) 7 6 5 4 3 2 1 0 - - emem smon pdtct (initial value: **00 0000) 5, 4 emem hold result of position detection at pwm edge (detect position detected position) 00: detected in the current pulse 01: detected while pwm off 10: detected in the current pulse 11: detected in the preceding pulse r 3 smon monitor sampling status 0: sampling idle 1: sampling in progress 2 to 0 pdtct hold position signal input status holds the status of the position signal input during unmatch detection mode. bits 2 to 0 correspond to w, v, and u phases. pdcrb (01fa1h) 7 6 5 4 3 2 1 0 splck splmd pdcmp (initial value: 0000 0000) 7, 6 splck select sampling input clock 00: fc/2 2 [hz] (200 ns at 20 mhz) 01: fc/2 3 (400 ns at 20 mhz) 10: fc/2 4 (800 ns at 20 mhz) 11: fc/2 5 (1.6 s at 20 mhz) r/w 5, 4 splmd sampling mode 00: sample when pwm is on 01: sample regularly 10: sample when lower phases conducting current 11: reserved 3 to 0 pdcmp position detection matched counts 1 to 15 times (counts 0 and 1 are assumed to be one time.) note:when changing setting, keep the pdcen bit reset to 0 (disable position detection function). pdcra (01fa0h) 7 6 5 4 3 2 1 0 swstp swstt sptm3 sttm2 pdnum rcen dtmd pdcen (initial value: 0000 0000) 7 swstp stop sampling in software 0: no operation 1: stop sampling w 6 swstt start sampling in software 0: no operation 1: start sampling 5 sptm3 stop sampling using timer 3 0: disable 1: enable r/w 4 sttm2 start sampling using timer 2 0: disable 1: enable 3 pdnum number of position signal input pins 0: compare three pins (pdu/pdv/pdw) 1: compare one pin (pdu) only 2 rcen recount occurrences of match- ing when pwm is on 0: continue counting from previously pwm on 1: recount each time pwm turns on 1 dtmd position detection mode 0: ordinary mode 1: unmatch detection mode 0 pdcen enable/disable position detec- tion function 0: disable 1: enable (sampling starts) TMP88F846UG page 115
note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the pdcra because it contains a write only bit. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.3 position detection unit page 116
sdreg (01fa3h) 7 6 5 4 3 2 1 0 - d6 d5 d4 d3 d2 d1 d0 (initial value: *000 0000) 6 to 0 sdreg sampling delay 2 3 /fc n bits (n = 0 to 6, maximum 50.8 s, resolution of 400 ns at 20 mhz) r/w note:when changing setting, keep the pdcen bit reset to 0 (disable position detection function). 14.3.3 outline processing in the position detection unit TMP88F846UG page 117     

    

   

  

    


  
 
 
  

     
       !  "# $% % !& 
    
'  



  

 
  (



  

   )


 ! 

14.4 timer unit figure 14-7 timer circuit configuration the timer unit has an up counter (mode timer) which is cleared by a position detection interrupt (intpdc). using this counter, it can generate three types of timer interrupts (inttmr1 to 3). these timer interrupts may be used to produce a commutation trigger, position detection start trigger, etc. also, the mode timer has a capture function which automatically captures register data in synchronism with position detection or overload protection. this capture func- tion allows motor revolutions to be calculated by measuring position detection intervals. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.4 timer unit page 118  
               
                   !"# !" "  $     % !"#   "#             %&  ' ()*)+
) )) , + ) )  ( - .'   /   /  .'   .' , .'
14.4.1 configuration of the timer unit the timer unit consists mainly of a mode timer, three timer comparator, and mode capture register, and is controlled by timer control registers and timer compare registers. ? the mode timer can be reset by a signal from the position detection circuit, timer 3, or overload protective circuit. if the mode timer overflows without being reset, it stops at ffffh and sets an overflow flag in the control register. ? the value of the mode timer during counting can be read by capturing the count in software and reading the capture register. ? timer 1 and timers 2 and 3 generate an interrupt signal by magnitude comparison and matching com- parison, respectively. therefore, timer 1 can generate an interrupt signal even when it could not write to the compare register in time and the counter value at the time of writing happens to exceed the registers set value. ? when any one of timers 1 to 3 interrupts occurs, the next interrupts can be enabled by writing a new value to the respective compare registers (cmp1, cmp2, cmp3). ? when capturing by position detection is enabled, the capture register has the timer value captured in it each time position is detected. in this way, the capture register always holds the latest value. TMP88F846UG page 119
14.4.1.1 timer circuit register functions mtcrb 7 dbout debug output debug output can be produced by setting this bit to 1. because interrupt signals to the interrupt control circuit are used for each interrupt, hardware debugging without software delays are possible. see the debug output diagram ( figure 14-8). output ports: p67 for pmd1. 5 tmof mode timer overflow this bit shows that the timer has overflowed. 3 clcp capture mode timer by over- load protection when this bit is set to 1, the timer value can be captured using the overload protection signal (cl) as a trigger. 2 swcp capture mode timer in soft- ware when this bit is set to 1, the timer value can be captured in software (e.g., by writing to this register). 1 pdccp capture mode timer by posi- tion detection when this bit is set to 1, the timer value can be captured using the position detection signal as a trigger. mtcra 7, 6, 5 tmck select clock select the timer clock. 4 rbtm3 reset mode timer from timer 3 when this bit is set to 1, the mode timer is reset by a trigger from timer 3. 3 rbcl reset mode timer by overload protection when this bit is set to 1, the mode timer is reset by the overload protection signal (cl) as a trigger. 2 swres reset mode timer in software when this bit is set to 1, the mode timer is reset in software (e.g., by writing to this register) 1 rbpdc reset mode timer by position detection when this bit is set to 1, the mode timer is reset by the position detection signal as a trigger. 0 tmen enable/disable mode timer the mode timer is started by setting this bit to 1. therefore, timers 1 to 3 must be set with cmp before setting this bit. if this bit is set to 0 after setting cmp, cmp settings become ineffective. mcap mode capture position detection interval can be read out. cmp1 timer 1 (commutation) timers 1 to 3 are enabled while the mode timer is operating. an interrupt can be generated once by setting the corresponding bit in this register. the interrupt is disable when an in- terrupt is generated or the timer is reset. to use the timer again, set the register back again even if data is same. cmp2 timer 2 (position detection start) cmp3 timer 3 (overflow) figure 14-8 dbout debug output diagram TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.4 timer unit page 120   
      

        
 
     
   
  
timer circuit registers [addresses (pmd1)] mtcrb (01fa5h) 7 6 5 4 3 2 1 0 dbout - tmof - clcp swcp pdccp - (initial value: 0*0*0 000*) 7 dbout debug output 0: disable 1: enable (p67 for pmd1, p77 for pmd2) r/w 5 tmof mode timer overflow 0: no overflow 1: overflowed r 3 clcp capture mode timer by overload protection 0: disable 1: enable r/w 2 swcp capture mode timer in software 0: no operation 1: capture w 1 pdccp capture mode timer by position detection 0: disable 1: enable r/w note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the mtcrb because it contains a write-only bit. mtcra (01fa4h) 7 6 5 4 3 2 1 0 tmck rbtm3 rbcl swres rbpdc tmen (initial value: 0000 0000) 7, 6, 5 tmck select clock 000: fc/2 3 (400 ns at 20 mhz) 010: fc/2 4 (800 ns at 20 mhz) 100: fc/2 5 (1.6 s at 20 mhz) 110: fc/2 6 (3.2 s at 20 mhz) 001: fc/2 7 (6.4 s at 20 mhz) 011: reserved 101: reserved 111: reserved r/w 4 rbtm3 reset mode timer from timer 3 0: disable 1: enable 3 rbcl reset mode timer by overload protection 0: disable 1: enable 2 swres reset mode timer in software 0: no operation 1: reset w 1 rbpdc reset mode timer by position detection 0: disable 1: enable r/w 0 tmen enable/disable mode timer 0: disable 1: enable timer start note 1: when changing mtcra setting, keep the mtcra bit reset to 0 (disable mode timer). note 2: read-modify-write instructions, such as a bit manipulation instruction, cannot access the mtcra because it contains a write-only bit. TMP88F846UG page 121
mcap (01fa7h, 01fa6h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: 0000 0000 0000 0000) df de dd dc db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 mcap mode capture position detection interval r cmp1 (01fa9h, 01fa8h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: 0000 0000 0000 0000) df de dd dc db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cmp2 (01fabh, 01faah) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: 0000 0000 0000 0000) df de dd dc db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cmp3 (01fadh, 01fach) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: 0000 0000 0000 0000) df de dd dc db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cmp1 timer 1 magnitude comparison compare register r/w cmp2 timer 2 matching comparison compare register cmp3 timer 3 matching comparison compare register note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the mtcrb or mtcra register because these registers contain write-only bits. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.4 timer unit page 122
14.4.1.2 outline processing in the timer unit TMP88F846UG page 123   

   

  
   
  
   
 
 
 
  
  
  
  
  
 !

"  
 "      
"       # #       $
%
$
   
  &    '   '(    
  )

 )     

  ) 
 )   
* 
 )   
*   
     $ 
    
    $ 
   +       
14.5 three-phase pwm output unit the three-phase pwm output unit has the function to generate three-phase pwm waves with any desired pulse width and the commutation function capable of brushless dc motor control. in addition, it has the protective functions such as overload protection and emergency stop functions necessary to protect the power drive unit, and the dead time adding function which helps to prevent the in-phase upper/lower transistors from getting shorted by simultaneous turn- on when switched over. for the pwm output pin (u,v,w,x,y,z), set the port register pxdr and pxcr (x = 3) to 1. the pwm output initially is set to be active low, so that if the output needs to be used active high, set up the mdcra register accord- ingly. 14.5.1 configuration of the three-phase pwm output unit the three-phase pwm output unit consists of a pulse width modulation circuit, commutation control circuit, protective circuit (emergency stop and overload), and a dead time control circuit. 14.5.1.1 pulse width modulation circuit (pwm waveform generating unit) this circuit produces three-phase independent pwm waveforms with an equal pwm frequency. for pwm waveform mode, triangular wave modulation or sawtooth wave modulation can be selected by using the pmd control register (mdcra) bit 1. the pwm frequency is set by using the pmd period register (mdprd). the following shows the relationship between the value of this register and the pwm counter clock set by the mdcrb register, pwmck. the pmd period register (mdprd) is comprised of dual-buffers, so that cmpu, v, w register is updated with pwm period. when the waveform arithmetic circuit is operating, the pwm waveform output unit receives calculation results from the waveform arithmetic circuit and by using the results as cmpu, v, w register set value, it outputs independent three-phase pwm waveforms. when the waveform calculation function is enabled by the waveform arithmetic circuit and transfer of calculation results into the cmpu to w registers is enabled (with edcra register bit 2), the cmpu to w registers are disabled against writing. when the waveform calculation function is enabled (with edcra register bit 1) and transfer of calculation results into the cmpu, v, w registers is disabled (with edcra register bit 2), the calculation results are transferred to the buffers of cmpu, v, w registers, but not output to the port. read-accessing the cmpu, v, and w registers can read the calculation results of the waveform arithmetic circuit that have been input to a buffer. after changing the read calculation result data by software, writing the changed data to the cmpu, v, and w registers enables an arbitrary waveform other than a sinusoidal wave to be output. when the registers are read after writing, the values written to the registers are read out if accessed before the calculation results are transferred after calculation is finished. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 124
figure 14-9 pwm waveforms the values of the pwm compare registers (cmpu/v/w) and the carrier wave generated by the pwm counter (mdcnt) are compared for the relative magnitude by the comparator to produce pwm waveforms. the pwm counter is a 12-bit up/down counter with a 100 ns (at fc = 20 mhz) resolution. for three-phase output control, two methods of generating three-phase pwm waveforms can be set. 1. three-phase independent mode: values are set independently in the three-phase pmd compare registers to produce three-phase independent pwm waveforms. this method may be used to produce sinusoidal or any other desired drive waveforms. 2. three-phase common mode: a value is set in only the u-phase pmd compare register to produce three in-phase pwm waveforms using the u phase set value. this method may be used for dc motor square wave drive. the three-phase pmd compare registers each have a comparison register to comprise a dual-buffer struc- ture. the values of the pmd compare registers are loaded into their respective comparison registers synchronously with pwm period. TMP88F846UG page 125   
   
      
   
  
 
  
 

14.5.1.2 commutation control circuit output ports are controlled depending on the contents set in the pmd output register (mdout). the contents set in this register are divided into two, one for selecting the synchronizing signal for port output, and one for setting up port output. the synchronizing signal can be selected from timers 1 or 2, position detection signal, or without sync. port output can be synchronized to this synchronizing signal before being further synchronized to the pwm signal sync. the mdout register's synchronizing signal select bit becomes effective immediately after writing. other bits are dual-buffered, and are updated by the selected synchro- nizing signal. example: commutation timing for one timer period with pwm synchronization specified output on six ports can be set to be active high or active low independently of each other by using the mdcra register bits 5 and 4. furthermore, the u, v, and w phases can individually be selected between pwm output and h/l output by using the mdout register bits a to 8 and 5 to 0. when pwm output is selected, pwm waveforms are output; when h/l output is selected, a waveform which is fixed high or low is output. the mdout register bits e to c set the expected position signal value for the position detection circuit. figure 14-10 pulse width modulation circuit TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 126 3 selector/ latch pwm control pwm interrupt intpwm clock selector pmd period register pmd compare register pwm counter pwm control register ? ? 3, 2, 1 7 60 mdcra b to 0 mdprd b to 0 mdcnt 1 to 0 mdcrb b to 0 cmpu b to 0 cmpw b to 0 cmpv buffer w buffer v buffer u selector/ latch three-phase common/ three-phase up/down pwmu pwmv pwmw stop mdcnt pwm synchronizing clock fc/2 inttmr pwm commutation
figure 14-11 commutation control circuit figure 14-12 dead time circuit TMP88F846UG page 127   
   
   
         
  
 

  
   ! " #$% & ' ($ ) )')&)*)+),)- s selector s selector gate control set reset latch 6 3 2 mdout 5, 4, 3, 2, 1, 0 a, 9, 87, 6 ? b ? , ? , ? mdout sync fc/4 pwm synchronizing clock position detection interrupt intpdc timer 1 interrupt inttmr1 timer 2 interrupt inttmr2 pmd output register u x v y w z pwmu pwmv pwmw
14.5.2 register functions of the waveform synthesis circuit mdcrb pwmck select pwm counter clock select pwm counter clock. mdcra 7 hlfint select half-period interrupt when this bit is set to 1, intpwm is generated every half period (at triangular wave peak and valley) in the case of center pwm output and pint = 00. in other cases, this setting has no meaning. 6 dtymd duty mode select whether to set the duty cycle independently for three phases using the cmpu to w registers or in common for all three phases by setting the cmpu register only. 5 polh upper-phase port polarity select the upper-phase output port polarity. make sure the waveform synthesis function (mdcra register bit 0) is idle before selecting this port polarity. 4 poll lower-phase port polarity select the lower-phase output port polarity. make sure the waveform synthesis function (mdcra register bit 0) is idle before selecting this port polarity. 3, 2 pint pwm interrupt frequency select the frequency at which to generate a pwm interrupt from four choices available: every pwm period or once every 2, 4, or 8 pwm periods. when setting of this bit is altered while operating, an interrupt may be generated at the time the bit is altered. 1 pwmmd pwm mode select pwm mode. pwm mode 0 is an edge pwm (sawtooth wave), and pwm mode 1 is a center pwm (triangular wave). 0 pwmen enable/disable waveform generation circuit when enabling this circuit (for waveform output), be sure to set the output port polarity and other bits of this register (other than mdcra bit 0) beforehand. dtr dtr dead time set the dead time between the upper-phase and lower-phase outputs. mdout f updwn pwm counter flag this bit indicates whether the pwm counter is counting up or down. when edge pwm (sawtooth wave) is selected, it is always set to 0. e, d, c pdexp mode compare register set the data to be compared with the position detection input port. the comparison data is adopted as the expected value simultaneously when port output sync settings made with mdout are reflected in the ports. (this is the expected position detection input value for the output set with mdout next time.) b psync select pwm synchronization select whether or not to synchronize port output to pwm period after being synchronized to the synchronizing signal selected with syncs. if selected to be synchronized to pwm, output is kept waiting for the next pwm after being synchronized with syncs. waveform settings are overwritten if new settings are written to the register during this time, and output is generated with those settings. a 9 8 wpwm vpwm upwm control uvw-phase pwm outputs set u, v, and w-phase port outputs. (see the table 14-3) 7, 6 syncs select port output sync signal select the synchronizing signal with which to output uvw-phase settings to ports. the synchronizing signal can be selected from timers 1 or 2, position detection, or asynchro- nous. select asynchronous when the initial setting, otherwise the above setting isnt reflected immediately. 5, 4 3, 2 1, 0 woc voc uoc control uvw-phase outputs set u, v, and w-phase port outputs. (see the table 14-3) mdcnt pwm counter this is a 12-bit read-only register used to count pwm periods. mdprd set pwm period this register determines pwm period, and is dual-buffered, allowing pwm period to be altered even while the pwm counter is operating. the buffers are loaded every pwm pe- riod. when 100 ns is selected for the pwm counter clock, make sure the least significant bit is set to 0. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 128
cmpu cmpv cmpw set pwm pulse width this comparison register determines the pulse widths output in the respective uvw pha- ses. this register is dual-buffered, and the pulse widths are determined by comparing the buffer and pwm counter. waveform synthesis circuit registers [addresses (pmd1)] mdcrb (01fafh) 7 6 5 4 3 2 1 0 - - - - - - pwmck (initial value: **** **00) 1, 0 pwmck pwm counter select clock 00: fc/2 [hz] (100 ns at 20 mhz) 01: fc/2 2 (200 ns at 20 mhz) 10: fc/2 3 (400 ns at 20 mhz) 11: fc/2 4 (800 ns at 20 mhz) r/w note:when changing setting, keep the pwmen bit reset to 0 (disable wave form synthesis function). mdcra (01faeh) 7 6 5 4 3 2 1 0 hlfint dtymd polh poll pint pwmmd pwmen (initial value: 0000 0000) 7 hlfint select half-period interrupt 0: interrupt as specified in pint 1: interrupt every half period when pint = 00 r/w 6 dtymd duty mode 0: u phase in common 1: three phases independent 5 polh upper-phase port polarity 0: active low 1: active high 4 poll lower-phase port polarity 0: active low 1: active high 3, 2 pint select pwm interrupt (trigger) 00: interrupt every period 01: interrupt once every 2 periods 10: interrupt once every 4 periods 11: interrupt once every 8 periods 1 pwmmd pwm mode 0: pwm mode0 (edge: sawtooth wave) 1: pwm mode1 (center: triangular wave) 0 pwmen enable/disable waveform syn- thesis function 0: disable 1: enable (waveform output) dtr (01fbeh) 7 6 5 4 3 2 1 0 - - d5 d4 d3 d2 d1 d0 (initial value: **00 0000) 5 to 0 dtr dead time 2 3 /fc 6 bit (maximum 25.2 s at 20 mhz) r/w note:when changing setting, keep the mdcra bit reset to "0" (disable wave form synthesis function). TMP88F846UG page 129
mdout (01fb3h, 01fb2h) f e d c b a 9 8 updwn pdexp psync wpwm vpwm upwm 7 6 5 4 3 2 1 0 syncs woc voc uoc (initial value: 00000000 00000000) f updwn pwm counter flag 0: counting up 1: counting down r e, d, c pdexp comparison register for position detection bit e: w-phase expected value bit d: v-phase expected value bit c: u-phase expected value r/w b psync select pwm synchronization 0: asynchronous 1: synchronized a wpwm w-phase pwm output 0: h/l level output 1: pwm waveform output 9 vpwm v-phase pwm output 0: h/l level output 1: pwm waveform output 8 upwm u-phase pwm output 0: h/l level output 1: pwm waveform output 7, 6 syncs select port output synchronizing signal 00: asynchronous 01: synchronized to position detection 10: synchronized to timer 1 11: synchronized to timer 2 5, 4 woc control w-phase output see the table 1-3 3, 2 voc control v-phase output 1, 0 uoc control u-phase output 14.5.3 port output as set with uoc/voc/woc bits and upwm/vpwm/wpwm bits table 14-3 example of pin output settings u-phase output polarity: active high (polh,poll = 1) u-phase output polarity: active low (polh,poll = 0) uoc upwm uoc upwm 1: pwm output 0: h/l level output 1: pwm output 0: h/l level output u phase x phase u phase x phase u phase x phase u phase x phase 0 0 pwm pwm l l 0 0 pwm pwm h h 0 1 l pwm l h 0 1 h pwm h l 1 0 pwm l h l 1 0 pwm h l h 1 1 pwm pwm h h 1 1 pwm pwm l l TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 130
mdcnt (01fb5h, 01fb4h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****000000000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 b to 0 pwm counter pwm period counter value r mdprd (01fb7h, 01fb6h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****000000000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 b to 0 pwm period pwm period mdprd 010h r/w cmpu (01fb9h, 01fb8h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****000000000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cmpv (01fbbh, 01fbah) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****000000000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cmpw (01fbdh, 01fbch) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****000000000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 b to 0 cmpu pwm compare u register set u-phase duty cycle r/w cmpv pwm compare v register set v-phase duty cycle cmpw pwm compare w register set w-phase duty cycle TMP88F846UG page 131
14.5.4 protective circuit this circuit consists of an emg protective circuit and overload protective circuit. these circuits are activated by driving their respective port inputs active. figure 14-13 configuration of the protective circuit a. emg protective circuit this protective circuit is used for emergency stop, when the emg protective circuit is enabled. when the signal on emg input port goes active (negative edge triggered), the six ports are immediately disabled high-impedance against output and an emg interrupt (intemg) is generated. the emg control register (emgcra) is used to set emg protection. if the emgcra shows the value 1 when read, it means that the emg protective circuit is operating. to return from the emg protective state, reset the mdout register bits a to 0 and set the emgcra to 1. returning from the emg protective state is effective when the emg protective input has been released back high. to disable the emg function, set data 5ah and a5hsequentially in the emg disable register (emgrel) and reset the emgcra to 0. when the emg function is disabled, emg in- terrupts (intemg) are not generated. the emg protective circuit is initially enabled. before disabling it, fully study on adequacy. b. overload protective circuit the overload protective circuit is set by using the emg control registers (emgcra/b). to activate overload protection, set the emgcrb to 1 to enable the overload protective circuit. the circuit starts operating when the overload protective input is pulled low. to return from overload state, there are three methods to use: return by a timer (emgcrb), return by pwm sync (emgcrb), or return manually (emgcrb). these methods are usable when the overload protective input has been released back high. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 132 cl detection reset control emg protective control timer 1 interrupt inttmr1 pwm synchronizing clock pwm sync overload protective interrupt intclm overload protective input cl stop mdcnt u x v y w z u' x' v' y' w' z' emg disable code register emg control register 210 ? 7, 6, 5, 4 emgcra 3, 2, 1, 0 7 emgcrb 4 6, 5 emgrel 7, 6, 5, 4, 3, 2, 1, 0 mdout a to 0 2 2 4 4 8 overload protective control set "0" emg emg input intemg emg interrupt under prote- ction
the number of times the overload protective input is sampled can be set by using the emg- cra. the sampling times can be set in the range of 1 to 15 times at 200 ns period (when fc = 20 mhz). if a low level is detected as many times as the specified number, overload protection is assumed. the output disabled phases during overload protection are set by using the emgcrb. this facility allows selecting to disable no phases, all phases, pwm phases, or all upper phases/all lower phases. when selected to disable all upper phases/all lower phases, port output is determined by their turn-on status immediately before being disabled. when two or more upper phases are active, all upper phases are turned on and all lower phases are turned off; when two or more lower phases are active, all upper phases are turned off and all lower phases are turned on. when output phase are cut off, output is inactive (low in the case of high active). when the overload protective circuit is disabled, overload protective interrupts (intclm) are not generated. figure 14-14 example of protection circuit operation TMP88F846UG page 133  
              
    
 
     
         
   
    !
14.5.5 functions of protective circuit registers emgrel emg disable the emg protective circuit is disable from the disabled state by writing 5ah and a5h to this register in that order. after that, the emgcra register needs to be set. emgcrb 7 rtcl return from overload protec- tive state when this bit is set to 1, the motor control circuit is returned from overload protective state in software (e.g., by writing to this register). also, the current state can be known by reading this bit. mdout outputs at return from the overload protective state remain as set before the overload protective input was driven active. 6 rtpwm return by pwm sync when this bit is set to 1, the motor control circuit is returned from overload protective state by pwm sync. if rtcl is set to 1, rtcl has priority. 5 rttm1 return by timer sync when this bit is set to 1, the motor control circuit is returned from overload protective state by timer 1 sync. if rtcl is set to 1, rtcl has priority. 4 clst overload protective state the status of overload protection can be known by reading this bit. 3, 2 clmd select output disabled phases during overload protection select the phases to be disabled against output during overload protection. this facility allows selecting to disable no phases, all phases, pwm phases, or all upper phases/all lower phases. 1 cntst stop counter during overload protection can stop the pwm counter during overload protection. 0 clen enable/disable overload pro- tection enable or disable the overload protective function. emgcra 7 to 4 clcnt overload protection sampling time set the length of time the overload protective input port is sampled. 2 emgst emg protective state the status of emg protection can be known by reading this bit. 1 rte return from emg protective state the motor control circuit is returned from emg protective state by setting this bit to 1 . when returning, set the mdout register a to 0 bits to 0 . then set the emgcra register bit 1 to 1 and set mdout waveform output. then set up the mdcra register. 0 emgen enable/disable emg protec- tive circuit the emg protective circuit is activated by setting this bit to 1. this circuit initially is enabled. (to disable this circuit, make sure key code 5ah and a5h are written to the emgrel1 register beforehand.) protective circuit registers [addresses (pmd1)] emgrel (01fbfh) 7 6 5 4 3 2 1 0 d7 d6 d5 d4 d3 d2 d1 d0 (initial value: 0000 0000) 7 to 0 emgrel emg disable can disable by writing 5ah and then a5h. w note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the emgrel register be- cause this register is write only. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.5 three-phase pwm output unit page 134
emgcrb (01fb1h) 7 6 5 4 3 2 1 0 rtcl rtpwm rttm1 clst clmd cntst clen (initial value: 0000 0000) 7 rtcl return from overload protective state 0: no operation 1: return from protective state w 6 rtpwm enable/disable return from overload protective state by pwm sync 0: disable 1: enable r/w 5 rttm1 enable/disable return from overload protective state by tim- er 1 0: disable 1: enable 4 clst overload protective state 0: no operation 1: under protection r 3, 2 clmd select output disabled phases during overload protection 00: no phases disabled against output 01: all phases disabled against output 10: pwm phases disabled against output 11: all upper/all lower phases disabled against output (note) r/w 1 cntst stop pwm counter during over- load protection 0: do not stop 1: stop the counter 0 clen enable/disable overload pro- tective circuit 0: disable 1: enable note:if during overload protection the port output state in two or more upper phases is on, all lower phases are disabled and all upper phases are enabled for output; when two or more lower phases are on, all upper phases are disabled and all lower phases are enabled for output. emgcra (01fb0h) 7 6 5 4 3 2 1 0 clcnt emgst rte emgen (initial value: 0000 *001) 7 to 4 clcnt overload protection sampling number of times. 2 2 /fc n ( n = 1 to 15, 0 and 1 are set as 1 at 20 mhz ) r/w 2 emgst emg protective state 0: no operation 1: under protection r 1 rte return from emg state 0: no operation 1: return from protective state (note 1) w 0 emgen enable/disable emg protective circuit 0: disable 1: enable r/w note 1: an instruction specifying a return from the emg state is invalid if the emg input is l. note 2: read-modify-write instructions, such as a bit manipulation instruction, cannot access the emgcrb or emgcra register because these registers contain write-only bits. TMP88F846UG page 135
14.6 electrical angle timer and waveform arithmetic circuit electrical angle timer figure 14-15 electrical angle timer circuit waveform arithmetic circuit figure 14-16 waveform arithmetic circuit TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 136   


  
  
 
   
  
    !"# $%& ' $     ! "   # % 
(
 )*")(  + 
 ,
  -)(   
   .)(   
   /)(   
   %&. %&- %&/  
  
  
 
   

 ( 0122 #   " !   /3%4 4$  #   " 4' .  
  
  
   4$%  "! 5 #   "   
     
       
  
  
     
       ! ! ! "!  #   $% !#!&!"!!'!!!( )* + ,(    
     -    
      
-     .    
- -
14.6.1 electrical angle timer and waveform arithmetic circuit the electrical angle timer finishes counting upon reaching the value set by the period set register (edset). the electrical angle timer counts 360 degrees of electrical angle in the range of 0 to 383 (17fh) and is cleared to 0 upon reaching 383. in this way, it is possible to obtain the electrical angle of the frequency proportional to the value set by the period set register. the period with which to count up can be corrected by using the period correction register, allowing for fine adjustment of the frequency. the electrical angles counted by the electrical angle timer are presented to the waveform arithmetic circuit. an electrical angle timer interrupt signal is generated each time the electrical angle timer finishes counting. the waveform arithmetic circuit has a sine wave data table, which is used to extract sine wave data based on the electrical angle data received from the electrical angle timer. this sine wave data is multiplied by the value of the voltage amplitude register. for 2-phase modulation, the product obtained by this multiplication is presented to the waveform synthesis circuit. for 3-phase modulation, waveform data is further calculated based on the product of multiplication and the electrical angle data and the value of the pwm period register. the calculation is performed each time the electrical angle timer finishes counting or when a value is set in the electrical angle register, and the calculation results consisting of the u phase, the v phase (+120 degrees), and the w phase (+240 degrees) are sequentially presented to the pwm waveform output circuit. the sine wave data table is stored in the ram and requires initialization. ? to correct the period, set the number of times n to be corrected in the period correction register (edset register f to c bits). the period is corrected by adding 1 to electrical angle counts 16 for n times. for example, when a value 3 is set in the period correction register, the period for 13 times out of electrical angle counts 16 is the value mh set in the period set register, and that for 3 times is m + 1h. (correction is made almost at equal intervals.) ? because the electrical angle counter (eldeg) can be accessed even while the electrical angle timer is operating, the electrical angles can be corrected during operation. ? the electrical angle capture edcap captures the electrical angle value from the electrical angle counter at the time the position is detected. ? when the waveform calculation function is enabled, waveform calculation is performed each time the electrical angle counter (eldeg) are accessed for write or the electrical angle timer finishes counting. ? the calculation is performed in 35 machine cycle of execution time, or 7 s (at 20 mhz). ? when transfer of calculation result to the cmp registers is enabled (edcra), the calcu- lation results are transferred to the cmpu to w registers. (this applies only when the waveform calculation function is enabled with the edcra.) the cmpu to w registers are disabled against write while the transfer remains enabled. the calculation results can be read from the cmpu to w registers while the waveform calculation function remains enabled. ? the calculated results can be modified and the modified data can be set in the cmpu to w registers in software. this makes it possible to output any desired waveform other than sine waves. if a transfer (edcra register bit 2) of the calculated results to the cmp register is disabled, read- accessing the cmpu to w registers can read the calculated results. (before read-accessing these registers, make sure that the calculation is completed.) ? to initialize the entire ram data of the sine wave data table, set the addresses at which to set, sequen- tially from 000h to 17fh, in the eldeg register, and write waveform data to the wfmdr register each time. make sure the waveform arithmetic circuit is disabled when writing this data. note 1: the value set in the period set register (edset register edt bits) must be equal to or greater than 010h. any value smaller than this is assumed to be 010h. note 2: the sine wave data that is read consists of the u phase, the v phase whose electrical angle is +120 (-120) degrees relative to the u phase, and the w phase whose electrical angle is +240 (-240) degrees relative to the u phase. note 3: if a period corresponding to an electrical angle of one degree is shorter than the required calculation time, the previously calculated results are used. TMP88F846UG page 137
14.6.1.1 functions of the electrical angle timer and waveform arithmetic circuit registers edcrb 3 calcst start calculation by software forcefully start calculation. when this bit is written while the waveform arithmetic circuit is calculating, the calculation is terminated and then newly started. 2 calcbsy calculation flag by reading this bit, the operation status of the waveform arithmetic circuit can be obtained. 1 edcalen enable/disable calculation start synchronized with elec- trical angle select whether to start calculation when the electrical angle timer finishes counting or when a value is set in the electrical angle register. when disabled, calculation is only started when calcst is set to 1. 0 edisel electrical angle interrupt set the electrical angle interrupt signal request timing to either when the electrical angle timer finishes counting or upon end of calculation. edcra 7 edcnt electrical angle count up/ down set whether the electrical angle timer counts up or down. 6 edrv select v-, w-phase select phase direction of v-phase and w-phase in relation to u-phase. 5, 4 edck select clock select the clock for the electrical angle timer. this setting can be altered even while the electrical angle timer is operating. 3 c2pen switch between 2-phase and 3-phase modulations select the modulation method with which to perform waveform calculation. two-phase modulation data = ramdata (eldeg) amp note: the sign during 3-phase modulation changes depending on the electrical angle. + for electrical angles 0 to 179 degrees (191) ? for electrical angles 180 (192) to 360 (383) degrees 2 rwren auto transfer calculation re- sults to cpm registers enable/disable transfer of calculation results by the waveform arithmetic circuit. when the waveform calculation function is enabled while at the same time transfer is enabled, cal- culation results are set as u, v, and w-phase duty cycles of the pwm generation circuit and are reflected in the ports. 1 calcen enable/disable waveform cal- culation function enable/disable the waveform calculation function. calculations are performed by the wave- form arithmetic circuit by enabling the waveform calculation function. when the waveform calculation function is enabled, the calculated results can be read from the u, v, and w- phase compare registers (cmpu, v, w) of the pwm generation circuit. 0 edten electrical angle timer enable/disable the electrical angle timer. when enabled, the electrical angle timer starts counting; when disabled, the electrical angle timer stops counting and is cleared to 0. edset f to c edth correct electrical angle period correct the period by adding 1 to electrical angle counts 16 for n times. the timer counts the electrical angle period set value mfor (16 ? n) times and counts (m + 1) for n times b to 0 edt electrical angle period set the electrical angle period. eldeg electrical angle read the electrical angle. this register can also be set to initialize or correct the angle while counting. any value greater than 17fh cannot be set. amp set voltage amplitude set the voltage amplitude. the waveform arithmetic circuit multiplies the data set here by the sine wave data read out from the sine wave ram. the amplitude has its upper limit determined by the set value of the mdprd register when performing this multiplication. edcap capture electrical angle capture the value from the electrical angle timer when the position is detected. wfmdr set sine wave data to initialize the entire ram data of the sine wave table, set the addresses at which to set, sequentially from 000h to 17fh, in the eldeg register, and write waveform data to the wfmdr register each time. make sure the waveform arithmetic circuit is disabled when writing this data. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 138
typical settings of sine wave data note:during 3-phase modulation, the sign changes at 180 degrees of electrical angle. figure 14-17 typical settings of sine wave data list of the electrical angle timer and waveform arithmetic circuit registers [addresses (pmd1)] edcrb (01fc1h) 7 6 5 4 3 2 1 0 - - - - calcst calcbsy edcalen edisel (initial value: **** 0000) 3 calcst start calculation by software 0: no operation 1: start calculation w 2 calcbsy calculation flag 0: waveform arithmetic circuit stopped 1: waveform arithmetic circuit calculating r 1 edcalen enable/disable calculation start synchronized with electrical an- gle 0: start calculation insync with electrical angle 1: do not calculation insync with electrical angle r/w 0 edisel electrical angle interrupt 0: interrupt when the electrical angle timer finishes counting 1: interrupt upon end of calculation note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the edcrb register be- cause this register is write only. TMP88F846UG page 139    
   
    
      
                   ! ! !! ! "#"$ "
% %
'
                  ! ! !! ! "#"$ "
% %
'

edcra (01fc0h) 7 6 5 4 3 2 1 0 edcnt edrv edck c2pen rwren calcen edten (initial value: 0000 0000) 7 edcnt electrical angle count up/down 0: count up 1: count down r/w 6 edrv select v-, w-phase 0: v = u + 120, w = u + 240 1: v = u ? 120, w = u ? 240 5, 4 edck select clock 00: fc/2 3 (400 ns at 20 mhz) 01: fc/2 4 (800 ns at 20 mhz) 10: fc/2 5 (1.6 s at 20 mhz) 11: fc/2 6 (3.2 s at 20 mhz) 3 c2pen switch between 2-/3-phase modulations 0: 2-phase modulation 1: 3-phase modulation 2 rwren transfer calculation result to cmp registers 0: disable 1: enable 1 calc enable/disable waveform cal- culation function 0: disable 1: enable 0 edten electrical angle enable/disable mode timer 0: disable 1: enable note:when changing the edcra setting, keep the edcra bit reset 0 (disable electrical angle timer). edset (01fc3h, 01fc2h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: 00000000 00010000) edth edt f to c edth correct period (n) 0 to 15 times r/w b to 0 edt set period (m) 010h one period of the electrical angle timer, t, is expressed by the equation below. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 140
eldeg (01fc5h, 01fc4h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: *******0 00000000) - - - - - - - d8 d7 d6 d5 d4 d3 d2 d1 d0 8 to 0 eldeg electrical angle set the initially and the count values of electrical angle. r/w amp (01fc7h, 01fc6h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ****0000 00000000) - - - - db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 b to 0 amp set voltage set the voltage to be used during waveform calculation. r/w edcap (01fc9h, 01fc8h) f e d c b a 9 8 7 6 5 4 3 2 1 0 (initial value: ******0 00000000) - - - - - - - d8 d7 d6 d5 d4 d3 d2 d1 d0 8 to 0 edcap captured value of electrical an- gle electrical angle timer value when position is detected. r wfmdr (01fcah) 7 6 5 4 3 2 1 0 d7 d6 d5 d4 d3 d2 d1 d0 (initial value: ********) 7 to 0 wfmdr sine wave data write sine wave data to ram of sine wave w note:read-modify-write instructions, such as a bit manipulation instruction, cannot access the wfmdr register be- cause this register is write only. TMP88F846UG page 141
14.6.1.2 list of pmd related control registers (1) input/output pins and input/output control registers pmd1 input/output pins (p3, p4) and port input/output control registers (p3cr, p4cr) name address bit r or w description p3dr 00003h 7 r/w overload protection ( cl1) 6 r/w emg input ( emg1) 5 to 0 r/w u1/v1/w1/x1/y1/z1 outputs. p4dr 00004h 2 to 0 r/w position signal inputs (pdu1, pdv1, pdw1). p3cr 01f89h 7 to 0 r/w p3 port input/output control (can be set bitwise). 0: input mode 1: output mode p4cr 01f8ah 2, 1, 0 r/w p0 port input/output control (can be set bitwise). 0: input mode 1: output mode note:when using these pins as pmd function or input port, set the output latch (p*dr) to 1. example of the pmd pin port setting input/output p3dr p3cr p4dr p4cr cl1 input * 0 - - emg1 input * 0 - - u1 output 1 1 - - pdu1 input - - * 0 TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 142
(2) motor control circuit control registers [address : pmd1] position detection control register (pdcr) and sampling delay register (sdreg) name address bit r or w description pdcrc 01fa2h 5, 4 r detect the position-detected position. 00: within the current pulse 01: when pwm is off 10: within the current pulse 11: within the preceding pulse 3 r monitor the sampling status. 0: sampling idle 1: sampling in progress 2 to 0 r holds the status of the position signal input during unmatch detection mode. bits 2, 1, and 0: w, v, and u phases pdcrb 01fa1h 7, 6 r/w select the sampling input clock [hz]. 00: fc/2 2 01: fc/2 3 10: fc/2 4 11: fc/2 5 5, 4 r/w sampling mode. 00: when pwm is on 01: regularly 10: when lower phases are turned on 3 to 0 r/w detection position match counts 1 to 15. pdcra 01fa0h 7 w 0: no operation 1: stop sampling in software 6 w 0: no operation 1: start sampling in software 5 r/w stop sampling using timer 3. 0: disable 1: enable 4 r/w start sampling using timer 2. 0: disable 1: enable 3 r/w number of position signal input pins. 0: compare three pins (pdu/pdv/pdw) 1: compare one pin (pdu) only 2 r/w count occurrences of matching when pwm is on. 0: subsequent to matching counts when pwm previously was on 1: recount occurrences of matching each time pwm is on 1 r/w position detection mode. 0: ordinary mode 1: unmatch detection mode 0 r/w enable/disable position detection function. 0: disable 1: enable (sampling starts) sdreg 01fa3h 6 to 0 r/w sampling delay. 2 3 /fc n bits (n = 0 to 6, maximum 50.8 s at 20 mhz). TMP88F846UG page 143
mode timer control register (mtcr), mode capture register (mcap), and compare registers (cmp1, cmp2, cmp3) name address bit r or w description mtcrb 01fa5h 7 r/w debug output. 0: disable 1: enable (p67 for pmd1) 5 r mode timer overflow. 0: no overflow 1: overflowed occurred 3 r/w capture mode timer by overload protection. 0: disable 1: enable 2 w capture mode timer by software. 0: no operation 1: capture 1 r/w capture mode timer by position detection. 0: disable 1: enable mtcra 01fa4h 7, 6, 5 r/w select clock for mode timer [hz]. 000: fc/2 3 (400 ns at 20 mhz) 010: fc/2 4 (800 ns at 20 mhz) 100: fc/2 5 (1.6 s at 20 mhz) 110: fc/2 6 (3.2 s at 20 mhz) 001: fc/2 7 (6.4 s at 20 mhz) 011: reserved 101: reserved 111: reserved 4 r/w reset timer by timer 3. 0: disable 1: enable 3 r/w reset timer by overload protection. 0: disable 1: enable 2 w reset timer by software. 0: no operation 1: reset 1 r/w reset timer by position detection. 0: disable 1: enable 0 r/w enable/disable mode timer. 0: disable 1: enable (timer starts) mcap 01fa7h, 01fa6h f to 0 r mode capture register. cmp1 01fa9h, 01fa8h f to 0 r/w compare register 1. cmp2 01fabh, 01faah f to 0 r/w compare register 2. cmp3 01fadh, 01fach f to 0 r/w compare register 3. TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 144
pmd control register (mdcr), dead time register (dtr), and pmd output register (mdout) name address bit r or w description mdcrb 01fafh 1, 0 r/w select clock for pwm counter. 00: fc/2 (100 ns at 20 mhz) 01: fc/2 2 (200 ns at 20 mhz) 10: fc/2 3 (400 ns at 20 mhz) 11: fc/2 4 (800 ns at 20 mhz) mdcra 01faeh 7 r/w select half-period interrupt 0: interrupt every period as specified in pint. 1: interrupt every half-period only pint=00. 6 r/w duty mode. 0: u phase in common 1: three phases independent 5 r/w upper-phase port polarity. 0: active low 1: active high 4 r/w lower-phase port polarity. 0: active low 1: active high 3, 2 r/w select pwm interrupt (trigger). 00: interrupt once every period 01: interrupt once 2 periods 10: interrupt once 4 periods 11: interrupt once 8 periods 1 r/w pwm mode. 0: pwm mode0 (edge: sawtooth wave) 1: pwm mode1 (center: triangular wave) 0 r/w enable/disable waveform synthesis function. 0: disable 1: enable (waveform output) dtr 01fbeh 5 to 0 r/w set dead time. 2 3 /fc 6bit (maximum 25.2 s at 20 mhz). mdout 01fb3h, 01fb2h f r 0: count up 1: count down e, d, c r/w comparison register for position detection. 6: w 5: v 4: u b r/w select pwm synchronization. 0: asynchronous with pwm period 1: synchronized a r/w w-phase pwm output. 0: h/l level output 1: pwm waveform output 9 r/w v-phase pwm output. 0: h/l level output 1: pwm waveform output 8 r/w u-phase pwm output. 0: h/l level output 1: pwm waveform output 7, 6 r/w select port output synchronizing signal. 00: asynchronous 01: synchronized to position detection 10: synchronized to timer 1 11: synchronized to timer 2 5, 4 r/w control w-phase output 3, 2 r/w control v-phase output 1, 0 r/w control u-phase output TMP88F846UG page 145
pwm counter (mdcnt), pmd period register (mdprd), and pmd compare registers (cmpu, cmpv, cmpw) name address bit r or w description mdcnt 01fb5h, 01fb4h b to 0 r read the pwm period counter value. mdprd 01fb7h, 01fb6h b to 0 r/w pwm period mdprd 010h. cmpu 01fb9h, 01fb8h b to 0 r/w set u-phase pwm duty cycle. cmpv 01fbbh, 01fbah b to 0 r/w set v-phase pwm duty cycle. cmpw 01fbdh, 01fbch b to 0 r/w set w-phase pwm duty cycle. emg disable code register (emgrel) and emg control register (emgcr) name address bit r or w description emgrel 01fbfh 7 to 0 w code input for disable emg protection circuit. can be disable by writing 5ah and then a5h. emgcrb 01fb1h 7 w return from overload protective state. 0: no operation 1: return from protective state 6 r/w condition for returning from overload protective state: synchronized to pwm. 0: disable 1: enable 5 r/w enable/disable return from overload protective state by timer 1. 0: disable 1: enable 4 r overload protective state. 0: no operation 1: under protection 3, 2 r/w select output disabled phases during overload protection. 00: no phases disabled against output 01: all phases disabled against output 10: pwm phases disabled against output 11: all upper/all lower phases disabled against output 1 r/w stop pwm counter (mdcnt) during overload protection. 0: do not stop 1: stop 0 r/w enable/disable overload protective circuit. 0: disable 1: enable emgcra 01fb0h 7 to 4 r/w overload protection sampling time. 2 2 /fc n (n = 1 to 15, at 20 mhz) 2 r emg protective state. 0: no operation 1: under protection 1 w return from emg protective state. 0: no operation 1: return from protective state 0 r/w enable/disable function of the emg protective circuit. 0: disable 1: enable (this circuit initially is enabled (= 1). to disable this circuit, make sure key code 5ah and a5h are written to the emgrel1 register before- hand.) TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 146
electrical angle control register (edcr), electrical angle period register (edset), electrical angle set register (eldeg), voltage set register (amp), and electrical angle capture register (edcap). name address bit r or w description edcrb 01fc1h 3 w 0: no operation 1: start calculation 2 r 0: waveform arithmetic circuit stopped 1: waveform arithmetic circuit calculation 1 r/w 0: start calculation insync with electrical angle 1: do not calculation insync with electrical angle 0 r/w 0: interrupt when the electrical angle timer finishes counting 1: interrupt upon end of calculation edcra 01fc0h 7 r/w 0: count up 1: count down 6 r/w 0: v = u + 120, w = u + 240 1: v = u ? 120, w = u ? 240 5, 4 r/w select clock. 00: fc/2 3 01: fc/2 4 10: fc/2 5 11: fc/2 6 3 r/w switch between 2/3-phase modulations. 0: two-phase modulation 1: three-phase modulation 2 r/w transfer calculation result to cmp registers. 0: disable 1: enable 1 r/w enable/disable waveform calculation function. 0: disable 1: enable 0 r/w electrical angle timer. 0: disable 1: enable edset 01fc3h, 01fc2h f to c r/w correct period (n) 0 to 15 times. b to 0 r/w set period (1/m counter) 010h eldeg 01fc5h, 01fc4h 8 to 0 r/w initially set and count values of electrical angle. amp 01fc7h, 01fc6h b to 0 r/w set voltage used during waveform calculation. edcap 01fc9h, 01fc8h 8 to 0 r electrical angle timer value when position is detected. wfmdr 01fcah 7 to 0 w set sine wave data. TMP88F846UG page 147
TMP88F846UG 14. motor control circuit (pmd: programmable motor driver) 14.6 electrical angle timer and waveform arithmetic circuit page 148
15. asynchronous serial interface (uart) the TMP88F846UG has a asynchronous serial interface (uart) . it can connect the peripheral circuits through txd and rxd pin. txd and rxd pin are also used as the general port. for txd pin, the corresponding general port should be set output mode (set its output control register to "1" after its output port latch to "1"). for rxd pin, should be set input mode. this uart and sio can not use simultaneously because their input/output ports are common. when using uart of TMP88F846UG, it might be impossible to communicate because of the error of the oscillation frequency. moreover, the oscillation frequency changes and it is impossible to communicate by the temperature change etc. therefore, we recommend you to adjust the transmission rate by the communication protocol as follows. [for example] 1. fixed data (ex: 05ah) is transmitted at head byte of transmission data or constant intervals from the host side whose oscillation is stable. 2. the host side keeps transmitting fixed data until receiving the ack from remote side. the usual communi- cation is restarted after ack reception. 3. remote side adjusts a transfer rate finely until receiving fixed data. when receiving fixed data, an ack is transmitted to host and communication is usually restarted. 15.1 configuration figure 15-1 uart (asynchronous serial interface) TMP88F846UG page 149 counter y a b c s s a b c d y e f g h uart status register uart control register 2 uart control register 1 transmit data buffer receive data buffer fc/13 fc/26 fc/52 fc/104 fc/208 fc/416 fc/96 stop bit parity bit fc/2 6 fc/2 7 fc/2 8 baud rate generator transmit/receive clock 2 4 3 2 2 2 noise rejection circuit m p x transmit control circuit shift register shift register receive control circuit mpx: multiplexe r uartcra tdbuf rdbuf inttxd intrxd uartsr uartcrb rxd txd inttc4
15.2 control uart is controlled by the uart control registers (uartcra, uartcrb). the operating status can be moni- tored using the uart status register (uartsr). uart control register1 uartcra (01f91h) 7 6 5 4 3 2 1 0 txe rxe stbt even pe brg (initial value: 0000 0000) txe transfer operation 0: 1: disable enable write only rxe receive operation 0: 1: disable enable stbt transmit stop bit length 0: 1: 1 bit 2 bits even even-numbered parity 0: 1: odd-numbered parity even-numbered parity pe parity addition 0: 1: no parity parity brg transmit clock select 000: 001: 010: 011: 100: 101: 110: 111: fc/13 [hz] fc/26 fc/52 fc/104 fc/208 fc/416 input inttc4 fc/96 note 1: when operations are disabled by setting uartcra bits to 0, the setting becomes valid when data transmit or receive complete. when the transmit data is stored in the transmit data buffer, the data are not transmitted. even if data transmit is enabled, until new data are written to the transmit data buffer, the current data are not transmitted. note 2: the transmit clock and the parity are common to transmit and receive. note 3: uartcra and uartcra should be set to 0 before uartcra is changed. note 4: in case fc = 20mhz, the timer counter 4 (tc4) is available as a baud rate generator. uart control register2 uartcrb (01f92h) 7 6 5 4 3 2 1 0 rxdnc stopbr (initial value: **** *000) rxdnc selection of rxd input noise rejectio time 00: 01: 10: 11: no noise rejection (hysteresis input) rejects pulses shorter than 31/fc [s] as noise rejects pulses shorter than 63/fc [s] as noise rejects pulses shorter than 127/fc [s] as noise write only stopbr receive stop bit length 0: 1: 1 bit 2 bits note 1: settings of rxdnc are limited depending on the transfer clock specified by brg. the combination "" is available but please do not select the combination "-". the transfer clock is calculated by the following equation : transfer clock [hz] =inttc4 sourcec clock [hz] tc4dr set value TMP88F846UG 15. asynchronous serial interface (uart) 15.2 control page 150
brg setting transfer clock [hz] rxdnc setting 00 (no noise rejection) 01 (reject pulses shorter than 31/fc[s] as noise) 10 (reject pulses shorter than 63/fc[s] as noise) 11 (reject pulses shorter than 127/fc[s] as noise) 000 fc/13 - 110 (when the transfer clock gen- erated by timer/counter inter- rupt is the same as the right side column) fc/8 - - - fc/16 - - fc/32 - the setting except the above uart status register uartsr (01f91h) 7 6 5 4 3 2 1 0 perr ferr oerr rbfl tend tbep (initial value: 0000 11**) perr parity error flag 0: 1: no parity error parity error read only ferr framing error flag 0: 1: no framing error framing error oerr overrun error flag 0: 1: no overrun error overrun error rbfl receive data buffer full flag 0: 1: receive data buffer empty receive data buffer full tend transmit end flag 0: 1: on transmitting transmit end tbep transmit data buffer empty flag 0: 1: transmit data buffer full (transmit data writing is finished) transmit data buffer empty note:when an inttxd is generated, tbep flag is set to "1" automatically. uart receive data buffer rdbuf (01f93h) 7 6 5 4 3 2 1 0 read only (initial value: 0000 0000) uart transmit data buffer tdbuf (01f93h) 7 6 5 4 3 2 1 0 write only (initial value: 0000 0000) TMP88F846UG page 151
15.3 transfer data format in uart, an one-bit start bit (low level), stop bit (bit length selectable at high level, by uartcra), and parity (select parity in uartcra; even- or odd-numbered parity by uartcra) are added to the transfer data. the transfer data formats are shown as follows. figure 15-2 transfer data format figure 15-3 caution on changing transfer data format note:in order to switch the transfer data format, perform transmit operations in the above figure 15-3 sequence except for the initial setting. TMP88F846UG 15. asynchronous serial interface (uart) 15.3 transfer data format page 152 without parity / 1 stop bit with parity / 1 stop bit without parity / 2 stop bit with parity / 2 stop bit start bit 0 bit 1 bit 6 bit 7 stop 1 start bit 0 bit 1 bit 6 bit 7 stop 1 stop 2 start bit 0 bit 1 bit 6 bit 7 parity stop 1 start bit 0 bit 1 bit 6 bit 7 parity stop 1 stop 2 pe 0 0 1 1 stbt frame length 0 1 123 89101112 0 1
15.4 transfer rate the baud rate of uart is set of uartcra. the example of the baud rate are shown as follows. table 15-1 transfer rate (example) brg source clock 16 mhz 8 mhz 000 76800 [baud] 38400 [baud] 001 38400 19200 010 19200 9600 011 9600 4800 100 4800 2400 101 2400 1200 when inttc4 is used as the uart transfer rate (when uartcra = 110), the transfer clock and transfer rate are determined as follows: transfer clock [hz] = tc4 source clock [hz] / tc4dr setting value transfer rate [baud] = transfer clock [hz] / 16 15.5 data sampling method the uart receiver keeps sampling input using the clock selected by uartcra until a start bit is detected in rxd pin input. rt clock starts detecting l level of the rxd pin. once a start bit is detected, the start bit, data bits, stop bit(s), and parity bit are sampled at three times of rt7, rt8, and rt9 during one receiver clock interval (rt clock). (rt0 is the position where the bit supposedly starts.) bit is determined according to majority rule (the data are the same twice or more out of three samplings). figure 15-4 data sampling method TMP88F846UG page 153 rt0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 bit 0 start bit bit 0 start bit (a) without noise rejection circuit rt clock rxd pin rxd pin internal receive data rt0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 bit 0 start bit bit 0 start bit rt clock internal receive data (b) with noise rejection circuit
15.6 stop bit length select a transmit stop bit length (1 bit or 2 bits) by uartcra. 15.7 parity set parity / no parity by uartcra and set parity type (odd- or even-numbered) by uartcra. 15.8 transmit/receive operation 15.8.1 data transmit operation set uartcra to 1. read uartsr to check uartsr = 1, then write data in tdbuf (transmit data buffer). writing data in tdbuf zero-clears uartsr, transfers the data to the transmit shift register and the data are sequentially output from the txd pin. the data output include a one-bit start bit, stop bits whose number is specified in uartcra and a parity bit if parity addition is specified. select the data transfer baud rate using uartcra. when data transmit starts, transmit buffer empty flag uartsr is set to 1 and an inttxd interrupt is generated. while uartcra = 0 and from when 1 is written to uartcra to when send data are written to tdbuf, the txd pin is fixed at high level. when transmitting data, first read uartsr, then write data in tdbuf. otherwise, uartsr is not zero-cleared and transmit does not start. 15.8.2 data receive operation set uartcra to 1. when data are received via the rxd pin, the receive data are transferred to rdbuf (receive data buffer). at this time, the data transmitted includes a start bit and stop bit(s) and a parity bit if parity addition is specified. when stop bit(s) are received, data only are extracted and transferred to rdbuf (receive data buffer). then the receive buffer full flag uartsr is set and an intrxd interrupt is generated. select the data transfer baud rate using uartcra. if an overrun error (oerr) occurs when data are received, the data are not transferred to rdbuf (receive data buffer) but discarded; data in the rdbuf are not affected. note:when a receive operation is disabled by setting uartcra bit to 0, the setting becomes valid when data receive is completed. however, if a framing error occurs in data receive, the receive-disabling setting may not become valid. if a framing error occurs, be sure to perform a re-receive operation. TMP88F846UG 15. asynchronous serial interface (uart) 15.6 stop bit length page 154
15.9 status flag 15.9.1 parity error when parity determined using the receive data bits differs from the received parity bit, the parity error flag uartsr is set to 1. the uartsr is cleared to 0 when the rdbuf is read after reading the uartsr. figure 15-5 generation of parity error 15.9.2 framing error when 0 is sampled as the stop bit in the receive data, framing error flag uartsr is set to 1. the uartsr is cleared to 0 when the rdbuf is read after reading the uartsr. figure 15-6 generation of framing error 15.9.3 overrun error when all bits in the next data are received while unread data are still in rdbuf, overrun error flag uartsr is set to 1. in this case, the receive data is discarded; data in rdbuf are not affected. the uartsr is cleared to 0 when the rdbuf is read after reading the uartsr. TMP88F846UG page 155 final bit stop shift register xxxx0 * 0xxxx0 xxx0 ** rxd pin uartsr intrxd interrupt after reading uartsr then rdbuf clears ferr. parity stop shift register pxxxx0 * 1pxxxx0 xxxx0 ** rxd pin uartsr intrxd interrupt after reading uartsr then rdbuf clears perr.
figure 15-7 generation of overrun error note: receive operations are disabled until the overrun error flag uartsr is cleared. 15.9.4 receive data buffer full loading the received data in rdbuf sets receive data buffer full flag uartsr to "1". the uartsr is cleared to 0 when the rdbuf is read after reading the uartsr. figure 15-8 generation of receive data buffer full note:if the overrun error flag uartsr is set during the period between reading the uartsr and reading the rdbuf, it cannot be cleared by only reading the rdbuf. therefore, after reading the rdbuf, read the uartsr again to check whether or not the overrun error flag which should have been cleared still remains set. 15.9.5 transmit data buffer empty when no data is in the transmit buffer tdbuf, that is, when data in tdbuf are transferred to the transmit shift register and data transmit starts, transmit data buffer empty flag uartsr is set to 1. the uartsr is cleared to 0 when the tdbuf is written after reading the uartsr. TMP88F846UG 15. asynchronous serial interface (uart) 15.9 status flag page 156 final bit stop shift register xxxx0 * 1xxxx0 xxxx yyyy xxx0 ** rxd pin uartsr intrxd interrupt rdbuf after reading uartsr then rdbuf clears rbfl. final bit stop shift register xxxx0 * 1xxxx0 yyyy xxx0 ** rxd pin uartsr intrxd interrupt after reading uartsr then rdbuf clears oerr. rdbuf uartsr
figure 15-9 generation of transmit data buffer empty 15.9.6 transmit end flag when data are transmitted and no data is in tdbuf (uartsr = 1), transmit end flag uartsr is set to 1. the uartsr is cleared to 0 when the data transmit is stated after writing the tdbuf. figure 15-10 generation of transmit end flag and transmit data buffer empty TMP88F846UG page 157 shift register * 1yyyy *** 1 xx **** 1 x ***** 1 stop start 1yyyy0 bit 0 txd pin uartsr uartsr inttxd interrupt data write for tdbuf shift register data write data write zzzz xxxx yyyy start bit 0 final bit stop 1xxxx0 ***** 1 * 1xxxx **** 1x ***** 1 1yyyy0 tdbuf txd pin uartsr inttxd interrupt after reading uartsr writing tdbuf clears tbep.
TMP88F846UG 15. asynchronous serial interface (uart) 15.9 status flag page 158
16. synchronous serial interface (sio) the TMP88F846UG has a clocked-synchronous 8-bit serial interface. serial interface has an 8-byte transmit and receive data buffer that can automatically and continuously transfer up to 64 bits of data. serial interface is connected to outside peripheral devices via so, si, sck port. this sio and uart can not use simultaneously because their input/output ports are common. 16.1 configuration figure 16-1 serial interface TMP88F846UG page 159 sio control / status register serial clock shift clock shift register 3 2 1 0 7 6 5 4 transmit and receive data buffer (8 bytes in dbr) control circuit cpu serial data output serial data input 8-bit transfer 4-bit transfer serial clock i/o buffer control circuit so si sck siocr2 siocr1 siosr intsio interrupt request
16.2 control the serial interface is controlled by sio control registers (siocr1/siocr2). the serial interface status can be determined by reading sio status register (siosr). the transmit and receive data buffer is controlled by the siocr2. the data buffer is assigned to address 01f98h to 01f9fh for sio in the dbr area, and can continuously transfer up to 8 words (bytes or nibbles) at one time. when the specified number of words has been transferred, a buffer empty (in the transmit mode) or a buffer full (in the receive mode or transmit/receive mode) interrupt (intsio) is generated. when the internal clock is used as the serial clock in the 8-bit receive mode and the 8-bit transmit/receive mode, a fixed interval wait can be applied to the serial clock for each word transferred. four different wait times can be selected with siocr2. sio control register 1 siocr1 7 6 5 4 3 2 1 0 (1f96h) sios sioinh siom sck (initial value: 0000 0000) sios indicate transfer start / stop 0: stop write only 1: start sioinh continue / abort transfer 0: continuously transfer 1: abort transfer (automatically cleared after abort) siom transfer mode select 000: 8-bit transmit mode 010: 4-bit transmit mode 100: 8-bit transmit / receive mode 101: 8-bit receive mode 110: 4-bit receive mode except the above: reserved sck serial clock select normal, idle mode write only dv1ck = 0 dv1ck = 0 000 fc/2 13 fc/2 14 001 fc/2 8 fc/2 9 010 fc/2 7 fc/2 8 011 fc/2 6 fc/2 7 100 fc/2 5 fc/2 6 101 fc/2 4 fc/2 5 110 reserved 111 external clock (input from sck pin) note 1: fc; high-frequency clock [hz] note 2: set siocr1 to "0" and siocr1 to "1" when setting the transfer mode or serial clock. note 3: siocr1 is write-only register, which cannot access any of in read-modify-write instruction such as bit operate, etc. TMP88F846UG 16. synchronous serial interface (sio) 16.2 control page 160
sio control register 2 siocr2 7 6 5 4 3 2 1 0 (1f97h) wait buf (initial value: ***0 0000) wait wait control always sets "00" except 8-bit transmit / receive mode. write only 00: t f = t d (non wait) 01: t f = 2t d ( wait) 10: t f = 4t d (wait) 11: t f = 8t d (wait) buf number of transfer words (buffer address in use) 000: 1 word transfer 01f98h 001: 2 words transfer 01f98h ~ 01f99h 010: 3 words transfer 01f98h ~ 01f9ah 011: 4 words transfer 01f98h ~ 01f9bh 100: 5 words transfer 01f98h ~ 01f9ch 101: 6 words transfer 01f98h ~ 01f9dh 110: 7 words transfer 01f98h ~ 01f9eh 111: 8 words transfer 01f98h ~ 01f9fh note 1: the lower 4 bits of each buffer are used during 4-bit transfers. zeros (0) are stored to the upper 4bits when receiving. note 2: transmitting starts at the lowest address. received data are also stored starting from the lowest address to the highest address. ( the first buffer address transmitted is 01f98h ). note 3: the value to be loaded to buf is held after transfer is completed. note 4: siocr2 must be set when the serial interface is stopped (siof = 0). note 5: *: don't care note 6: siocr2 is write-only register, which cannot access any of in read-modify-write instruction such as bit operate, etc. note 7: t f ; frame time, t d ; data transfer time figure 16-2 frame time (t f ) and data transfer time (t d ) sio status register siosr 7 6 5 4 3 2 1 0 (1f97h) siof sef (initial value: 00** ****) siof serial transfer operating status monitor 0: 1: transfer terminated transfer in process read only sef shift operating status monitor 0: 1: shift operation terminated shift operation in process note 1: after siocr1 is cleared to "0", siosr is cleared to "0" at the termination of transfer or the setting of siocr1 to "1". TMP88F846UG page 161 td tf (output) s ck output
16.3 serial clock 16.3.1 clock source internal clock or external clock for the source clock is selected by siocr1. 16.3.1.1 internal clock any of six frequencies can be selected. the serial clock is output to the outside on the sck pin. the sck pin goes high when transfer starts. when data writing (in the transmit mode) or reading (in the receive mode or the transmit/receive mode) cannot keep up with the serial clock rate, there is a wait function that automatically stops the serial clock and holds the next shift operation until the read/write processing is completed. table 16-1 serial clock rate normal, idle mode sck clock baud rate 000 fc/2 13 2.44 kbps 001 fc/2 8 78.13 kbps 010 fc/2 7 156.25 kbps 011 fc/2 6 312.50 kbps 100 fc/2 5 625.00 kbps 101 fc/2 4 125.00 kbps 110 - - 111 external external note:1 kbit = 1024 bit (fc = 20 mhz) figure 16-3 automatic wait function (at 4-bit transmit mode) 16.3.1.2 external clock an external clock connected to the sck pin is used as the serial clock. in this case, the sck (p43) port should be set to input mode. to ensure shifting, a pulse width of more than 2 4 /fc is required. this pulse is needed for the shift operation to execute certainly. actually, there is necessary processing time for interrupting, writing, and reading. the minimum pulse is determined by setting the mode and the program. TMP88F846UG 16. synchronous serial interface (sio) 16.3 serial clock page 162 a 1 a 2 b 0 b 1 b 2 b 3 c 0 c 1 a 3 a c b a 0 pin (output) pin (output) written transmit data a utomat i ca ll y wait function sck so
figure 16-4 external clock pulse width 16.3.2 shift edge the leading edge is used to transmit, and the trailing edge is used to receive. 16.3.2.1 leading edge transmitted data are shifted on the leading edge of the serial clock (falling edge of the sck pin input/ output). 16.3.2.2 trailing edge received data are shifted on the trailing edge of the serial clock (rising edge of the sck pin input/output). figure 16-5 shift edge 16.4 number of bits to transfer either 4-bit or 8-bit serial transfer can be selected. when 4-bit serial transfer is selected, only the lower 4 bits of the transmit/receive data buffer register are used. the upper 4 bits are cleared to 0 when receiving. the data is transferred in sequence starting at the least significant bit (lsb). 16.5 number of words to transfer up to 8 words consisting of 4 bits of data (4-bit serial transfer) or 8 bits (8-bit serial transfer) of data can be transferred continuously. the number of words to be transferred can be selected by siocr2. TMP88F846UG page 163 bit 1 bit 2 bit 3 * 321 3210 ** 32 *** 3 bit 0 shift register shift register bit 1 bit 0 bit 2 bit 3 0 *** **** 210 * 10 ** 3210 (a) leading edge (b) trailing edge * ; don?t care so pin si pin sck pin sck pin t sckl t sckh t sckl , t sckh > 2 4 /fc sck pin (input)
an intsio interrupt is generated when the specified number of words has been transferred. if the number of words is to be changed during transfer, the serial interface must be stopped before making the change. the number of words can be changed during automatic-wait operation of an internal clock. in this case, the serial interface is not required to be stopped. figure 16-6 number of words to transfer (example: 1word = 4bit) 16.6 transfer mode siocr1 is used to select the transmit, receive, or transmit/receive mode. 16.6.1 4-bit and 8-bit transfer modes in these modes, firstly set the sio control register to the transmit mode, and then write first transmit data (number of transfer words to be transferred) to the data buffer registers (dbr). after the data are written, the transmission is started by setting siocr1 to 1. the data are then output sequentially to the so pin in synchronous with the serial clock, starting with the least significant bit (lsb). as soon as the lsb has been output, the data are transferred from the data buffer register to the shift register. when the final data bit has been transferred and the data buffer register is empty, an intsio (buffer empty) interrupt is generated to request the next transmitted data. when the internal clock is used, the serial clock will stop and an automatic-wait will be initiated if the next transmitted data are not loaded to the data buffer register by the time the number of data words specified with the siocr2 has been transmitted. writing even one word of data cancels the automatic-wait; therefore, when transmitting two or more words, always write the next word before transmission of the previous word is completed. note:automatic waits are also canceled by writing to a dbr not being used as a transmit data buffer register; therefore, during sio do not use such dbr for other applications. for example, when 3 words are trans- mitted, do not use the dbr of the remained 5 words. TMP88F846UG 16. synchronous serial interface (sio) 16.6 transfer mode page 164 a 1 a 2 a 3 a 0 a 1 a 2 a 3 b 0 b 1 b 2 b 3 c 0 c 1 c 2 c 3 a 0 a 1 a 0 a 2 a 3 b 0 b 1 b 2 b 3 c 0 c 1 c 2 c 3 (a) 1 word transmit (b) 3 words transmit (c) 3 words receive so pin intsio interrupt intsio interrupt intsio interrupt so pin si pin sck pin sck pin sck pin
when an external clock is used, the data must be written to the data buffer register before shifting next data. thus, the transfer speed is determined by the maximum delay time from the generation of the interrupt request to writing of the data to the data buffer register by the interrupt service program. the transmission is ended by clearing siocr1 to 0 or setting siocr1 to 1 in buffer empty interrupt service program. siocr1 is cleared, the operation will end after all bits of words are transmitted. that the transmission has ended can be determined from the status of siosr because siosr is cleared to 0 when a transfer is completed. when siocr1 is set, the transmission is immediately ended and siosr is cleared to 0. when an external clock is used, it is also necessary to clear siocr1 to 0 before shifting the next data; if siocr1 is not cleared before shift out, dummy data will be transmitted and the operation will end. if it is necessary to change the number of words, siocr1 should be cleared to 0, then siocr2 must be rewritten after confirming that siosr has been cleared to 0. figure 16-7 transfer mode (example: 8bit, 1word transfer, internal clock) TMP88F846UG page 165 a 1 a 2 a 3 a 4 a 5 a 6 a 7 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 a 0 dbr b a clear sios write (a) write (b) sck pin (output) so pin intsio interrupt siocr1 siosr siosr siosr
figure 16-8 transfer mode (example: 8bit, 1word transfer, external clock) figure 16-9 transmitted data hold time at end of transfer 16.6.2 4-bit and 8-bit receive modes after setting the control registers to the receive mode, set siocr1 to 1 to enable receiving. the data are then transferred to the shift register via the si pin in synchronous with the serial clock. when one word of data has been received, it is transferred from the shift register to the data buffer register (dbr). when the number of words specified with the siocr2 has been received, an intsio (buffer full) interrupt is generated to request that these data be read out. the data are then read from the data buffer registers by the interrupt service program. when the internal clock is used, and the previous data are not read from the data buffer register before the next data are received, the serial clock will stop and an automatic-wait will be initiated until the data are read. a wait will not be initiated if even one data word has been read. note:waits are also canceled by reading a dbr not being used as a received data buffer register is read; therefore, during sio do not use such dbr for other applications. when an external clock is used, the shift operation is synchronized with the external clock; therefore, the previous data are read before the next data are transferred to the data buffer register. if the previous data have not been read, the next data will not be transferred to the data buffer register and the receiving of any more data will be canceled. when an external clock is used, the maximum transfer speed is determined by the delay between the time when the interrupt request is generated and when the data received have been read. TMP88F846UG 16. synchronous serial interface (sio) 16.6 transfer mode page 166 msb of last word t sodh = min 3.5/fc [s] (in the normal, idle modes) sck pin so pin siosr a 1 a 2 a 3 a 4 a 5 a 6 a 7 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 a 0 dbr b a clear sios write (a) write (b) sck pin (input) so pin intsio interrupt siocr1 siosr siosr
the receiving is ended by clearing siocr1 to 0 or setting siocr1 to 1 in buffer full interrupt service program. when siocr1 is cleared, the current data are transferred to the buffer. after siocr1 cleared, the receiving is ended at the time that the final bit of the data has been received. that the receiving has ended can be determined from the status of siosr. siosr is cleared to 0 when the receiving is ended. after confirmed the receiving termination, the final receiving data is read. when siocr1 is set, the receiving is immediately ended and siosr is cleared to 0. (the received data is ignored, and it is not required to be read out.) if it is necessary to change the number of words in external clock operation, siocr1 should be cleared to 0 then siocr2 must be rewritten after confirming that siosr has been cleared to 0. if it is necessary to change the number of words in internal clock, during automatic-wait operation which occurs after completion of data receiving, siocr2 must be rewritten before the received data is read out. note:the buffer contents are lost when the transfer mode is switched. if it should become necessary to switch the transfer mode, end receiving by clearing siocr1 to 0, read the last data and then switch the transfer mode. figure 16-10 receive mode (example: 8bit, 1word transfer, internal clock) 16.6.3 8-bit transfer / receive mode after setting the sio control register to the 8-bit transmit/receive mode, write the data to be transmitted first to the data buffer registers (dbr). after that, enable the transmit/receive by setting siocr1 to 1. when transmitting, the data are output from the so pin at leading edges of the serial clock. when receiving, the data are input to the si pin at the trailing edges of the serial clock. when the all receive is enabled, 8-bit data are transferred from the shift register to the data buffer register. an intsio interrupt is generated when the number of data words specified with the siocr2 has been transferred. usually, read the receive data from the buffer register in the interrupt service. the data buffer register is used for both transmitting and receiving; there- fore, always write the data to be transmitted after reading the all received data. when the internal clock is used, a wait is initiated until the received data are read and the next transfer data are written. a wait will not be initiated if even one transfer data word has been written. when an external clock is used, the shift operation is synchronized with the external clock; therefore, it is necessary to read the received data and write the data to be transmitted next before starting the next shift operation. when an external clock is used, the transfer speed is determined by the maximum delay between generation of an interrupt request and the received data are read and the data to be transmitted next are written. TMP88F846UG page 167 a 1 a 0 a 2 a 3 a 4 a 5 a 6 a 7 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 dbr b a clear sios read out read out sck pin (output) si pin intsio interrupt siocr1 siosr siosr
the transmit/receive operation is ended by clearing siocr1 to 0 or setting siocr1 to 1 in intsio interrupt service program. when siocr1 is cleared, the current data are transferred to the buffer. after siocr1 cleared, the transmitting/receiving is ended at the time that the final bit of the data has been transmitted. that the transmitting/receiving has ended can be determined from the status of siosr. siosr is cleared to 0 when the transmitting/receiving is ended. when siocr1 is set, the transmit/receive operation is immediately ended and siosr is cleared to 0. if it is necessary to change the number of words in external clock operation, siocr1 should be cleared to 0, then siocr2 must be rewritten after confirming that siosr has been cleared to 0. if it is necessary to change the number of words in internal clock, during automatic-wait operation which occurs after completion of transmit/receive operation, siocr2 must be rewritten before reading and writing of the receive/transmit data. note:the buffer contents are lost when the transfer mode is switched. if it should become necessary to switch the transfer mode, end receiving by clearing siocr1 to 0, read the last data and then switch the transfer mode. figure 16-11 transfer / receive mode (example: 8bit, 1word transfer, internal clock) TMP88F846UG 16. synchronous serial interface (sio) 16.6 transfer mode page 168 a 1 a 0 a 2 a 3 a 4 a 5 a 6 a 7 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 c 1 c 0 c 2 c 3 c 4 c 5 c b c 6 c 7 d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 clear sios dbr d a read out (c) write (a) read out (d) write (b) sck pin (output) so pin intsio interrupt siocr1 siosr siosr si pin
figure 16-12 transmitted data hold time at end of transfer / receive TMP88F846UG page 169 bit 7 of last word bit 6 t sodh = min 4/fc [s] (in the normal, idle modes) sck pin so pin siosr
TMP88F846UG 16. synchronous serial interface (sio) 16.6 transfer mode page 170
17. 10-bit ad converter (adc) the TMP88F846UG have a 10-bit successive approximation type ad converter. 17.1 configuration the circuit configuration of the 10-bit ad converter is shown in figure 17-1. it consists of control register adccra and adccrb, converted value register adcdrh and adcdrl, a da converter, a sample-hold circuit, a comparator, and a successive comparison circuit. note:before using ad converter, set appropriate value to i/o port register combining a analog input port. for details, see the section on "i/o ports". figure 17-1 10-bit ad converter TMP88F846UG page 171 2 4 10 8 ainds adrs r/2 r/2 r ack amd irefon ad conversion result register 1, 2 ad converter control register 1, 2 adbf eocf intadc sain n successive approximate circuit adccrb adcdrh adcdrl adccra  sample hold circuit a s en shift clock da converter analog input multiplexer y reference voltage analog comparator 2 3 control circuit 2 4 10 8 ainds adrs r/2 r/2 r ack amd irefon ad conversion result register 1, 2 ad converter control register 1, 2 adbf eocf intadc sain n successive approximate circuit adccrb adcdrh adcdrl adccra  sample hold circuit a s en shift clock da converter analog input multiplexer y reference voltage analog comparator 2 3 control circuit intpwm1 avss varef avdd ain0 ain7
17.2 register configuration the ad converter consists of the following four registers: 1. ad converter control register 1 (adccra) this register selects the analog channels and operation mode (software start or repeat) in which to perform ad conversion and controls the ad converter as it starts operating. 2. ad converter control register 2 (adccrb) this register selects the ad conversion time and controls the connection of the da converter (ladder resistor network). 3. ad converted value register 1 (adcdrh) this register used to store the digital value after being converted by the ad converter. 4. ad converted value register 2 (adcdrl) this register monitors the operating status of the ad converter. ad converter control register 1 adccra (0026h) 7 6 5 4 3 2 1 0 adrs amd ainds sain (initial value: 0001 0000) adrs ad conversion start 0: 1: - ad conversion start r/w amd ad operating mode 00: 01: 10: 11: ad operation disable software start mode intpwm start mode repeat mode ainds analog input control 0: 1: analog input enable analog input disable sain analog input channel select 0000: 0001: 0010: 0011: 0100: 0101: 0110: 0111: 1000: 1001: 1010: 1011: 1100: 1101: 1110: 1111: ain0 ain1 ain2 ain3 ain4 ain5 ain6 ain7 reserved reserved reserved reserved reserved reserved reserved reserved note 1: select analog input channel during ad converter stops (adcdrl = "0"). note 2: when the analog input channel is all use disabling, the adccra should be set to "1". note 3: during conversion, do not perform port output instruction to maintain a precision for all of the pins because analog input port use as general input port. and for port near to analog input, do not input intense signaling of change. note 4: the adccra is automatically cleared to "0" after starting conversion. note 5: do not set adccra newly again during ad conversion. before setting adccra newly again, check adcdrl to see that the conversion is completed or wait until the interrupt signal (intadc) is generated (e.g., interrupt handling routine). note 6: after stop mode is started, ad converter control register1 (adccra) is all initialized and no data can be written in this register. therefore, to use ad converter again, set the adccra newly after returning to normal mode. note 7: after reset, adccra is initialized reserved setting. therefore, set the appropriate analog input channel to adccra when use ad converter. TMP88F846UG 17. 10-bit ad converter (adc) 17.2 register configuration page 172
note 8: after adccra is set to 00h, ad conversion can not be started for four cycles. thus, four nops must be inserted before setting the adccra. ad converter control register 2 adccrb (0027h) 7 6 5 4 3 2 1 0 irefon "1" ack "0" (initial value: **0* 000*) irefon da converter (ladder resistor) connection control 0: 1: connected only during ad conversion always connected r/w ack ad conversion time select (refer to the following table about the con- version time) 000: 001: 010: 011: 100: 101: 110: 111: 39/fc reserved 78/fc 156/fc 312/fc 624/fc 1248/fc reserved note 1: always set bit0 in adccrb to "0" and set bit4 in adccrb to "1". note 2: when a read instruction for adccrb, bit6 to 7 in adccrb read in as undefined data. note 3: after stop mode is started, ad converter control register2 (adccrb) is all initialized and no data can be written in this register. therefore, to use ad converter again, set the adccrb newly after returning to normal mode. table 17-1 ack setting and conversion time (at cgcr="0") condition conversion time 20 mhz 16 mhz 8 mhz ack 000 39/fc - - - 001 reserved 010 78/fc - - - 011 156/fc - - 19.5 s 100 312/fc 15.6 s 19.5 s 39.0 s 101 624/fc 31.2 s 39.0 s 78.0 s 110 1248/fc 62.4 s 78.0 s 156.0 s 111 reserved table 17-2 ack setting and conversion time (at cgcr="1") condition conversion time 20 mhz 16 mhz 8 mhz ack 000 39/fc - - - 001 reserved 010 78/fc - - - 011 156/fc - - 19.5 s 100 312/fc 15.6 s 19.5 s 39.0 s 101 624/fc 31.2 s 39.0 s 78.0 s 110 1248/fc 62.4 s 78.0 s 156.0 s 111 reserved note 1: setting for "?" in the above table are inhibited. fc: high frequency oscillation clock [hz] note 2: set conversion time setting should be kept more than the following time by analog reference voltage (varef). TMP88F846UG page 173
- varef = 4.5 to 5.5 v 15.6 s and more ad converted value register 1 adcdrh (0029h) 7 6 5 4 3 2 1 0 ad09 ad08 ad07 ad06 ad05 ad04 ad03 ad02 (initial value: 0000 0000) ad converted value register 2 adcdrl (0028h) 7 6 5 4 3 2 1 0 ad01 ad00 eocf adbf (initial value: 0000 ****) eocf ad conversion end flag 0: 1: before or during conversion conversion completed read only adbf ad conversion busy flag 0: 1: during stop of ad conversion during ad conversion note 1: the adcdrl is cleared to "0" when reading the adcdrh. therefore, the ad conversion result should be read to adcdrl more first than adcdrh. note 2: the adcdrl is set to "1" when ad conversion starts, and cleared to "0" when ad conversion finished. it also is cleared upon entering stop mode. note 3: if a read instruction is executed for adcdrl, read data of bit3 to bit0 are unstable. TMP88F846UG 17. 10-bit ad converter (adc) 17.2 register configuration page 174
17.3 function 17.3.1 software start mode after setting adccra to 01 (software start mode), set adccra to 1. ad conversion of the voltage at the analog input pin specified by adccra is thereby started. after completion of the ad conversion, the conversion result is stored in ad converted value registers (adcdrh, adcdrl) and at the same time adcdrl is set to 1, the ad conversion finished interrupt (intadc) is generated. adrs is automatically cleared after ad conversion has started. do not set adccra newly again (restart) during ad conversion. before setting adccra newly again, check adcdrl to see that the conversion is completed or wait until the interrupt signal (intadc) is generated (e.g., interrupt handling routine). figure 17-2 software start mode 17.3.2 repeat mode ad conversion of the voltage at the analog input pin specified by adccra is performed repeatedly. in this mode, ad conversion is started by setting adccra to 1 after setting adccra to 11 (repeat mode). after completion of the ad conversion, the conversion result is stored in ad converted value registers (adcdrh, adcdrl) and at the same time adcdrl is set to 1, the ad conversion finished interrupt (intadc) is generated. in repeat mode, each time one ad conversion is completed, the next ad conversion is started. to stop ad conversion, set adccra to 00 (disable mode) by writing 0s. the ad convert operation is stopped immediately. the converted value at this time is not stored in the ad converted value register. TMP88F846UG page 175 adcdrh status eocf cleared by reading conversion result conversion result read adcdrl intadc interrupt request adcdrl adccra 1st conversion result 2nd conversion result indeterminate ad conversion start ad conversion start a dcdrh a dcdrl conversion result read conversion result read conversion result read
figure 17-3 repeat mode 17.3.2.1 register setting 1. set up the ad converter control register 1 (adccra) as follows: ? choose the channel to ad convert using ad input channel select (sain). ? specify analog input enable for analog input control (ainds). ? specify amd for the ad converter control operation mode (software or repeat mode). 2. set up the ad converter control register 2 (adccrb) as follows: ? set the ad conversion time using ad conversion time (ack). for details on how to set the conversion time, refer to table 17-1, table 17-2 and ad converter control register 2. ? choose irefon for da converter control. 3. after setting up (1) and (2) above, set ad conversion start (adrs) of ad converter control register 1 (adccra) to 1. if software start mode has been selected, ad conversion starts immediately. 4. after an elapse of the specified ad conversion time, the ad converted value is stored in ad converted value register 1 (adcdrh) and the ad conversion finished flag (eocf) of ad con- verted value register 2 (adcdrl) is set to 1, upon which time ad conversion interrupt intadc is generated. 5. eocf is cleared to 0 by a read of the conversion result. however, if reconverted before a register read, although eocf is cleared the previous conversion result is retained until the next conversion is completed. TMP88F846UG 17. 10-bit ad converter (adc) 17.3 function page 176 a dcdrh,adcdrl eocf cleared by reading conversion result conversion result read a dcdrl intadc interrupt request conversion operation a dccra indeterminate ad conversion start adccra ?11? ?00? 1st conversion result ad convert operation suspended. conversion result is not stored. 2nd conversion result 3rd conversion result a dcdrh a dcdrl 2nd conversion result 3rd conversion result 1st conversion result conversion result read conversion result read conversion result read conversion result read conversion result read
example :after selecting the conversion time 15.6 s at 20 mhz and the analog input channel ain4 pin, perform ad conversion once. after checking eocf, read the converted value, store the lower 2 bits in address 0009eh and store the upper 8 bits in address 0009fh in ram. the operation mode is software start mode. : (port setting) : ;set port register appropriately before setting ad converter registers. : : ; (refer to section i/o port in details) ld (adccra) , 00100100b ; select software start mode, analog input enable, and ain4 ld (adccrb) , 00011000b ;select conversion time(312/fc) and operation mode set (adccra) . 7 ; adrs = 1(ad conversion start) sloop : test (adcdrb) . 5 ; eocf= 1 ? jrs t, sloop ld a , (adcdrl) ; read result data ld (9eh) , a ld a , (adcdrh) ; read result data ld (9fh), a 17.3.3 intpwm start mode ad conversion can be started by the pwm interrupt (intpwm) provided as part of the pmd function. to use intpwm start mode, set adccra to "10" to put the ad converter in a standby state. while the ad converter is in this state, generation of an intpwm interrupt set adccra to "1" and starts ad conversion. after the ad conversion operation is completed, the conversion result is stored in the ad conversion value registers (adcdrh, adcdrl). at the same time, adcdrl is set to "1" and an end-of-conversion interrupt (intadc) is generated. to perform the next ad conversion in intpwm start mode, set adccra to "1" (to analog input disable) and then set adccra to "0" (to analog input enable) to put the ad converter in a standby state. to stop ad conversion, write "0" to adccra. this will immediately stop the ad conversion op- eration in progress. at this time, the conversion value is not stored in the ad conversion value registers, and the ad converter immediately exits a standby state. TMP88F846UG page 177
figure 17-4 intpwm start mode 17.3.3.1 register setting 1. set the ainds (analog input control) bit to "1" to disable analog input. 2. set the ad converter control register 1 (adccra) as follows: ? select the ad conversion channel to be used in the sain (analog input channel select) field. ? set the amd (ad operating mode) field to "10" to select intpwm start mode. 3. set the ad converter control register 2 (adccrb) as follows: ? specify the ad conversion time in the ack field. for details, see table 17-1 and table 17-2. ? set the irefon (da converter connection control) bit as appropriate. 4. after making the above settings, set adccra (analog input control) to "0" to put the ad converter in a standby state. 5. upon generation of an intpwm interrupt, adccra (ad conversion start) is set to "1" ad conversion is immediately started. 6. after completion of the ad conversion operation, the end-of-conversion flag (eocf) in the adcdrl is set to "1" and the ad conversion result is stored in the ad conversion value registers 1 and 2 (adcdrh and adcdrl). at this time, an intadc interrupt is generated. 7. when the conversion result is read from the ad conversion value register 1 (adcdrh), the eocf flag is cleared to "0". if the next ad conversion is performed before the adcdrh is read, the eocf flag is cleared to "0", but the previous conversion result is retained until the next conversion is completed. 8. after end of conversion in intpwm start mode, it dose not put the ad converter in a standby state. to start the next ad conversion in intpwm start mode, first set adccra to "1" to disable analog input, then clear this bit again to put the ad converter in a standby state. to change the ad conversion operation, first clear adccra to "00" to disable ad operation, and then set adccra again. TMP88F846UG 17. 10-bit ad converter (adc) 17.3 function page 178 adcdrh 8cnwg conversion result read adcdrl intadc interrupt request adcdrl adccra 1st conversion result indeterminate 2 nd conversion result indeterminate ad conversion start ad conversion start a dcdrh read a dcdrl read intpwm adccra 0:analog inputs enable 0:analog inputs enable 10:intpwm start mode 00 1:analog input disable adccra conversion result read conversion result read conversion result read
17.4 stop mode during ad conversion when standby mode (stop mode) is entered forcibly during ad conversion, the ad convert operation is suspended and the ad converter is initialized (adccra and adccrb are initialized to initial value). also, the conversion result is indeterminate. (conversion results up to the previous operation are cleared, so be sure to read the conversion results before entering standby mode (stop mode).) when restored from standby mode (stop mode), ad conversion is not automatically restarted, so it is necessary to restart ad conversion. note that since the analog reference voltage is automatically disconnected, there is no possibility of current flowing into the analog reference voltage. TMP88F846UG page 179
17.5 analog input voltage and ad conversion result the analog input voltage is corresponded to the 10-bit digital value converted by the ad as shown in figure 17-5. figure 17-5 analog input voltage and ad conversion result (typ.) TMP88F846UG 17. 10-bit ad converter (adc) 17.5 analog input voltage and ad conversion result page 180 1 0 01 h 02 h 03 h 3fd h 3fe h 3ff h 2 3 1021 1022 1023 1024 analog input voltage 1024 ad conversion result varef avss
17.6 precautions about ad converter 17.6.1 analog input pin voltage range make sure the analog input pins (ain0 to ain7) are used at voltages within varef to avss. if any voltage outside this range is applied to one of the analog input pins, the converted value on that pin becomes uncertain. the other analog input pins also are affected by that. 17.6.2 analog input shared pins the analog input pins (ain0 to ain7) are shared with input/output ports. when using any of the analog inputs to execute ad conversion, do not execute input/output instructions for all other ports. this is necessary to prevent the accuracy of ad conversion from degrading. not only these analog input shared pins, some other pins may also be affected by noise arising from input/output to and from adjacent pins. 17.6.3 noise countermeasure the internal equivalent circuit of the analog input pins is shown in figure 17-6. the higher the output impedance of the analog input source, more easily they are susceptible to noise. therefore, make sure the output impedance of the signal source in your design is 5 k or less. toshiba also recommends attaching a capacitor external to the chip. figure 17-6 analog input equivalent circuit and example of input pin processing TMP88F846UG page 181 da converter aini analog comparator internal resistance permissible signal source impedance internal capacitance 5 k ? (typ) c = 22 pf (typ.) 5 k ? (max) note) i = 7 to 0
TMP88F846UG 17. 10-bit ad converter (adc) 17.6 precautions about ad converter page 182
18. flash memory TMP88F846UG has 8192 bytes flash memory (address: 04000h to 05effh and fff00h to ffffh). the write and erase operations to the flash memory are controlled in the following three types of mode. - mcu mode the flash memory is accessed by the cpu control in the mcu mode. this mode is used for software bug correction and firmware change after shipment of the device since the write operation to the flash memory is available by retaining the application behavior. - serial prom mode the flash memory is accessed by the cpu control in the serial prom mode. use of the serial interface (uart) enables the flash memory to be controlled by the small number of pins. TMP88F846UG in the serial prom mode supports on-board programming which enables users to program flash memory after the mi- crocontroller is mounted on a user board. - parallel prom mode the parallel prom mode allows the flash memory to be accessed as a stand-alone flash memory by the program writer provided by the third party. high-speed access to the flash memory is available by controlling address and data signals directly. for the support of the program writer, please ask toshiba sales represen- tative. in the mcu and serial prom modes, the flash memory control register (flscr) is used for flash memory control. this chapter describes how to access the flash memory using the flash memory control register (flscr) in the mcu and serial prom modes. TMP88F846UG page 183
18.1 flash memory control the flash memory is controlled via the flash memory control register (flscr) and flash memory stanby control resister (flsstb). flash memory control register flscr 7 6 5 4 3 2 1 0 (01fffh) flsmd (initial value : 1100 ****) flsmd flash memory command sequence exe- cution control 1100: disable command sequence execution 0011: enable command sequence execution others: reserved r/w note 1: the command sequence of the flash memory can be executed only when flscr="0011b". in other cases, any attempts to execute the command sequence are ineffective. note 2: flscr must be set to either "1100b" or "0011b". note 3: bits 3 to 0 in flscr register are always read as dont care. 18.1.1 flash memory command sequence execution control (flscr) the flash memory can be protected from inadvertent write due to program error or microcontroller misoper- ation. this write protection feature is realized by disabling flash memory command sequence execution via the flash memory control register (write protect). to enable command sequence execution, set flscr to 0011b. to disable command sequence execution, set flscr to 1100b. after reset, flscr is initialized to 1100b to disable command sequence execution. normally, flscr should be set to 1100b except when the flash memory needs to be written or erased. TMP88F846UG 18. flash memory 18.1 flash memory control page 184
18.2 command sequence the command sequence in the mcu and the serial prom modes consists of six commands (jedec compatible), as shown in table 18-1. table 18-1 command sequence command sequence 1st bus write cy- cle 2nd bus write cy- cle 3rd bus write cy- cle 4th bus write cy- cle 5th bus write cy- cle 6th bus write cy- cle address data address data address data address data address data address data 1 1 byte program 04555h aah 04aaa h 55h 04555h a0h ba (note 1) data (note 1) - - - - 2 sector erase (4-kbyte erase) 04555h aah 04aaa h 55h 04555h 80h 04555h aah 04aaa h 55h sa (note 2) 30h 3 chip erase (all erase) 04555h aah 04aaa h 55h 04555h 80h 04555h aah 04aaa h 55h 04555h 10h 4 product id entry 04555h aah 04aaa h 55h 04555h 90h - - - - - - 5 product id exit xxh f0h - - - - - - - - - - product id exit 04555h aah 04aaa h 55h 04555h f0h - - - - - - 6 security program 04555h aah 04aaa h 55h 04555h a5h 04f7fh 00h - - - - note 1: set the address and data to be written. note 2: set the address which is the specified sector. (the area to be erased is specified with the upper 8 bits of the address.) (example) in case " sector 1 ", sa is " 0x05yyy ". 18.2.1 byte program this command writes the flash memory for each byte unit. the addresses and data to be written are specified in the 4th bus write cycle. each byte can be programmed in a maximum of 40 s. the next command sequence cannot be executed until the write operation is completed. to check the completion of the write operation, perform read operations repeatedly until the same data is read twice from the same address in the flash memory. during the write operation, any consecutive attempts to read from the same address is reversed bit 6 of the data (toggling between 0 and 1). note:to rewrite data to flash memory addresses at which data (including ffh) is already written, make sure to erase the existing data by "sector erase" or "chip erase" before rewriting data. 18.2.2 sector erase (4-kbyte erase) this command erases the flash memory in units of 4 kbytes. the flash memory area to be erased is specified by the upper 4 bits of the 6th bus write cycle address. for example, to erase 4 kbytes from f000h to ffffh, specify one of the addresses in f000h-ffffh as the 6th bus write cycle. the sector erase command is effective only in the mcu and serial prom modes, and it cannot be used in the parallel prom mode. a maximum of 30 ms is required to erase 4 kbytes. the next command sequence cannot be executed until the erase operation is completed. to check the completion of the erase operation, perform read operations repeatedly for data polling until the same data is read twice from the same address in the flash memory. during the erase operation, any consecutive attempts to read from the same address is reversed bit 6 of the data (toggling between 0 and 1). 18.2.3 chip erase (all erase) this command erases the entire flash memory in approximately 30 ms. the next command sequence cannot be executed until the erase operation is completed. to check the completion of the erase operation, perform read TMP88F846UG page 185
operations repeatedly for data polling until the same data is read twice from the same address in the flash memory. during the erase operation, any consecutive attempts to read from the same address is reversed bit 6 of the data (toggling between 0 and 1). after the chip is erased, all bytes contain ffh. 18.2.4 product id entry this command activates the product id mode. in the product id mode, the vendor id, the flash id, and the security program status can be read from the flash memory. table 18-2 values to be read in the product id mode cell address meaning read value 1 04000h vendor id 98h 04001h flash macro id 41h 04002h flash size 1dh: 120 kbytes 0eh: 60 kbytes 0bh: 48 kbytes 07h: 32 kbytes 05h: 24 kbytes 03h: 16 kbytes 01h: 8 kbytes 00h: 4 kbytes 04f7fh security program status ffh: security program disabled other than ffh: security program enabled note:the value at address 04002h (flash size) depends on the size of flash memory incorporated in each product. for example, if the product has 16-kbyte flash memory, "03h" is read from address 04002h. 18.2.5 product id exit this command is used to exit the product id mode. 18.2.6 security program this command enables the read/write protection setting in the flash memory. when the security program is enabled, the flash memory cannot be read and cannot be written in the parallel prom mode. in the serial prom mode, the flash write and ram loader commands cannot be executed. to disable the security program setting, it is necessary to execute the chip erase command sequence. whether or not the security program is enabled can be checked by reading 04f7fh in the product id mode. for details, see table 18-2. it takes a maximum of 40 s to set security program in the flash memory. the next command sequence cannot be executed until this operation is completed. to check the completion of the sequrity program operation, perform read operations repeatedly for data polling until the same data is read twice from the same address in the flash memory. during the security program operation, any attempts to read from the same address is reversed bit 6 of the data (toggling between 0 and 1). 18.3 toggle bit (d6) after the byte program, chip erase, and security program command sequence is executed, any consecutive attempts to read from the same address is reversed bit 6 (d6) of the data (toggling between 0 and 1) until the operation is completed. therefore, this toggle bit provides a software mechanism to check the completion of each operation. TMP88F846UG 18. flash memory 18.3 toggle bit (d6) page 186
usually perform read operations repeatedly for data polling until the same data is read twice from the same address in the flash memory. after the byte program, chip erase, or security program command sequence is executed, the initial read of the toggle bit always produces a "1". 18.4 access to the flash memory area when the write, erase and security program are set in the flash memory, read and fetch operations cannot be performed in the entire flash memory area. therefore, to perform these operations in the entire flash memory area, access to the flash memory area by the control program in the bootrom or ram area. (the flash memory program cannot write to the flash memory.) the serial prom or mcu mode is used to run the control program in the boot- rom or ram area. note 1: the flash memory can be written or read for each byte unit. erase operations can be performed either in the entire area or in units of 4 kbytes, whereas read operations can be performed by an one transfer instruction. however, the command sequence method is adopted for write and erase operations, requiring several-byte transfer instruc- tions for each operation. note 2: to rewrite data to flash memory addresses at which data (including ffh) is already written, make sure to erase the existing data by "sector erase" or "chip erase" before rewriting data. 18.4.1 flash memory control in the serial prom mode the serial prom mode is used to access to the flash memory by the control program provided in the boot- rom area. since almost of all operations relating to access to the flash memory can be controlled simply by the communication data of the serial interface (uart), these functions are transparent to the user. for the details of the serial prom mode, see serial prom mode. to access to the flash memory by using peripheral functions in the serial prom mode, run the ram loader command to execute the control program in the ram area. the procedures to execute the control program in the ram area is shown in "18.4.1.1 how to write to the flash memory by executing the control program in the ram area (in the ram loader mode within the serial prom mode)". 18.4.1.1 how to write to the flash memory by executing the control program in the ram area (in the ram loader mode within the serial prom mode) (steps 1 and 2 are controlled by the bootrom, and steps 3 to 9 are controlled by the control program executed in the ram area.) 1. transfer the write control program to the ram area in the ram loader mode. 2. jump to the ram area. 3. disable (di) the interrupt master enable flag (imf"0"). 4. set flscr to "0011b" (to enable command sequence execution). 5. execute the erase command sequence. 6. read the same flash memory address twice. (repeat step 6 until the same data is read by two consecutive reads operations.) 7. execute the write command sequence. 8. read the same flash memory address twice. (repeat step 8 until the same data is read by two consecutive reads operations.) 9. set flscr to "1100b" (to disable command sequence execution). note 1: before writing to the flash memory in the ram area, disable interrupts by setting the interrupt master enable flag (imf) to "0". usually disable interrupts by executing the di instruction at the head of the write control program in the ram area. note 2: since the watchdog timer is disabled by the bootrom in the ram loader mode, it is not required to disable the watchdog timer by the ram loader program. TMP88F846UG page 187
example :after chip erasure, the program in the ram area writes data 3fh to address f000h. di : disable interrupts (imf "0") ld (flscr),0011_1000b : enable command sequence execution. ld ix,04555h ld iy,04aaah ld hl,0f000h ; #### flash memory chip erase process #### ld (ix),0aah : 1st bus write cycle ld (iy),55h : 2nd bus write cycle ld (ix),80h : 3rd bus write cycle ld (ix),0aah : 4th bus write cycle ld (iy),55h : 5th bus write cycle ld (ix),10h : 6th bus write cycle sloop1: ld a,(ix) cmp a,(ix) jr nz,sloop1 : loop until the same value is read. ; #### flash memory write process #### ld (ix),0aah : 1st bus write cycle ld (iy),55h : 2nd bus write cycle ld (ix),0a0h : 3rd bus write cycle ld (hl),3fh : 4th bus write cycle, (f000h) = 3fh sloop2: ld a,(hl) cmp a,(hl) jr nz,sloop2 : loop until the same value is read. ld (flscr),1100_1000b : disable command sequence execution. sloop3: jp sloop3 TMP88F846UG 18. flash memory 18.4 access to the flash memory area page 188
18.4.2 flash memory control in the mcu mode in the mcu mode, write operations are performed by executing the control program in the ram area. before execution of the control program, copy the control program into the ram area or obtain it from the external using the communication pin. the procedures to execute the control program in the ram area in the mcu mode are described below. 18.4.2.1 how to write to the flash memory by executing a user write control program in the ram area (in the mcu mode) (steps 1 and 2 are controlled by the program in the flash memory, and steps 3 through 11 are controlled by the control program in the ram area.) 1. transfer the write control program to the ram area. 2. jump to the ram area. 3. disable (di) the interrupt master enable flag (imf"0"). 4. disable the watchdog timer, if it is used. 5. set flscr to "0011b" (to enable command sequence execution). 6. execute the erase command sequence. 7. read the same flash memory address twice. (repeat step 7 until the same data is read by two consecutive read operations.) 8. execute the write command sequence. 9. read the same flash memory address twice. (repeat step 9 until the same data is read by two consecutive read operations.) 10. set flscr to "1100b" (to disable command sequence execution). 11. jump to the flash memory area. note 1: before writing to the flash memory in the ram area, disable interrupts by setting the interrupt master enable flag (imf) to "0". usually disable interrupts by executing the di instruction at the head of the write control program in the ram area. note 2: when writing to the flash memory, do not intentionally use non-maskable interrupts (the watchdog timer must be disabled if it is used). if a non-maskable interrupt occurs while the flash memory is being written, unexpected data is read from the flash memory (interrupt vector), resulting in malfunction of the micro- controller. TMP88F846UG page 189
example :after sector erasure (e000h-efffh), the program in the ram area writes data 3fh to address e000h. di : disable interrupts (imf"0") ld (wdtcr2),4eh : clear the wdt binary counter. ldw (wdtcr1),0b101h : disable the wdt. ld (flscr),0011_1000b : enable command sequence execution. ld ix,04555h ld iy,04aaah ld hl,0e000h ; #### flash memory sector erase process #### ld (ix),0aah : 1st bus write cycle ld (iy),55h : 2nd bus write cycle ld (ix),80h : 3rd bus write cycle ld (ix),0aah : 4th bus write cycle ld (iy),55h : 5th bus write cycle ld (hl),30h : 6th bus write cycle sloop1: ld a,(ix) cmp a,(ix) jr nz,sloop1 : loop until the same value is read. ; #### flash memory write process #### ld (ix),0aah : 1st bus write cycle ld (iy),55h : 2nd bus write cycle ld (ix),0a0h : 3rd bus write cycle ld (hl),3fh : 4th bus write cycle, (e000h)=3fh sloop2: ld a,(hl) cmp a,(hl) jr nz,sloop2 : loop until the same value is read. ld (flscr),1100_1000b : disable command sequence execution. jp xxxxh : jump to the flash memory area. example :this write control program reads data from address f000h and stores it to 98h in the ram area. ld a,(0f000h) : read data from address f000h. ld (98h),a : store data to address 98h. TMP88F846UG 18. flash memory 18.4 access to the flash memory area page 190
19. serial prom mode 19.1 outline the TMP88F846UG has a 4096 byte bootrom (mask rom) for programming to flash memory. the boot- rom is available in the serial prom mode, and controlled by test, boot, reset and some pins. communication is performed via uart. the serial prom mode has seven types of operating mode: flash memory writing, ram loader, flash memory sum output, product id code output, flash memory status output, flash memory erasing and flash memory security program setting. memory address mapping in the serial prom mode differs from that in the mcu mode. figure 19-1 shows memory address mapping in the serial prom mode. table 19-1 operating range in the serial prom mode parameter min max unit power supply 4.5 5.5 v high frequency (note) 8 20 mhz note 1: though included in above operating range, some of high frequencies are not supported in the serial prom mode. for details, refer to table 19-5. note 2: as for TMP88F846UG, high frequencies becomes 20mhz fixation by a built-in oscillator. moreover, there is a case where communication becomes impossible, since the frequency of a built-in oscillator is changed with temperature etc. please use in normal temperature (around 25 degrees ) as much as possible. 19.2 memory mapping the figure 19-1 shows memory mapping in the serial prom mode and mcu mode. in the serial prom mode, the bootrom (mask rom) is mapped in addresses from 3000h to 3fffh. figure 19-1 memory address maps TMP88F846UG page 191 0003fh 00000h 64 bytes 4096 bytes 00040h 01fffh 03000h 03fffh 04000h 05effh sfr ram dbr bootrom flash memory serial prom mode 512 +128 bytes 002bfh 01f80h 144 bytes 8064 bytes vector table fff00h fffffh 0003fh 00000h 64 bytes 00040h 01fffh 04000h 05effh sfr ram dbr flash memory mcu mode 512 +128 bytes 002bfh 01f80h 144 bytes 8064 bytes vector table fff00h fffffh (256 bytes) (256 bytes)
19.3 serial prom mode setting 19.3.1 serial prom mode control pins to execute on-board programming, activate the serial prom mode. table 19-2 shows pin setting to activate the serial prom mode. table 19-2 serial prom mode setting pin setting test pin high boot/rxd pin high reset pin note:the boot pin is shared with the uart communication pin (rxd pin) in the serial prom mode. this pin is used as uart communication pin after activating serial prom mode 19.3.2 pin function in the serial prom mode, txd (p45) and rxd (p44) are used as a serial interface pin. table 19-3 pin function in the serial prom mode pin name (serial prom mode) input/ output function pin name (mcu mode) txd output serial data output (note 3) (note 1) p45 boot/rxd input/input serial prom mode control/serial data input p44 reset input serial prom mode control reset test input fixed to high test vdd, avdd power supply 4.5 to 5.5 v vss, avss power supply 0 v varef power supply leave open or apply input reference voltage. i/o ports except p45, p44 i/o these ports are in the high-impedance state in the serial prom mode. the input level is fixed to the port inputs with a hardware feature to prevent overlap current. (the port inputs are invalid.) to make the port inputs valid, set the pin of the spcr register to 1 by the ram loader control program. note 1: during on-board programming with other parts mounted on a user board, be careful no to affect these communication control pins. note 2: txd port is set a open-drain port in seriarl prom mode and it needs pull-up resistor. TMP88F846UG 19. serial prom mode 19.3 serial prom mode setting page 192
figure 19-2 serial prom mode pin setting note 1: for connection of other pins, refer to "table 19-3 pin function in the serial prom mode" . 19.3.3 example connection for on-board writing figure 19-3 shows an example connection to perform on-board wring. figure 19-3 example connection for on-board writing note 1: when other parts on the application board effect the uart communication in the serial prom mode, isolate these pins by a jumper or switch. note 2: when the reset control circuit on the application board effects activation of the serial prom mode, isolate the pin by a jumper or switch. note 3: for connection of other pins, refer to "table 19-3 pin function in the serial prom mode". TMP88F846UG page 193 vdd(4.5 v to 5.5 v) serial prom mode mcu mode vdd test reset pc control pull-up level converter vss gnd external control board application board rc power-on reset circuit reset control (note 1) (note 2) other parts boot / rxd (p44) txd (p45) vdd(4.5 v to 5.5 v) serial prom mode mcu mode vdd test reset external control pull-up vss gnd boot / rxd (p44) txd (p45) TMP88F846UG
19.3.4 activating the serial prom mode the following is a procedure to activate the serial prom mode. "figure 19-4 serial prom mode timing" shows a serial prom mode timing. 1. supply power to the vdd pin. 2. set the reset pin to low. 3. set the test pin and boot/rxd pins to high. 4. wait until the power supply and clock oscillation stabilize. 5. set the reset pin to high. 6. input the matching data (5ah) to the boot/rxd pin after setup sequence. for details of the setup timing, refer to "19.16 uart timing". figure 19-4 serial prom mode timing TMP88F846UG 19. serial prom mode 19.3 serial prom mode setting page 194 vdd test(input) reset(input) program setup time for serial prom mode (rxsup) high level setting matching data don't care reset mode serial prom mode input boot/rxd (input)
19.4 interface specifications for uart the following shows the uart communication format used in the serial prom mode. to perform on-board programming, the communication format of the write controller must also be set in the same manner. the default baud rate is 9600 bps regardless of operating frequency of the microcontroller. the baud rate can be modified by transmitting the baud rate modification data shown in table 19-4 to TMP88F846UG. the table 19-5 shows an operating frequency and baud rate. the frequencies which are not described in table 19-5 can not be used. - baud rate (default): 9600 bps - data length: 8 bits - parity addition: none - stop bit: 1 bit table 19-4 baud rate modification data baud rate modification data 04h 05h 06h 07h 0ah 18h 28h baud rate (bps) 76800 62500 57600 38400 31250 19200 9600 table 19-5 operating frequency and baud rate in the serial prom mode (note 3) reference baud rate (bps) 76800 62500 57600 38400 31250 19200 9600 baud rate modification da- ta 04h 05h 06h 07h 0ah 18h 28h ref. fre- quency (mhz) rating (mhz) baud rate (bps) (%) (bps) (%) (bps) (%) (bps) (%) (bps) (%) (bps) (%) (bps) (%) 7 20 18.80 to 20.64 76923 +1.73 - - - - 39063 +0.16 31250 0.00 19531 +1.73 9766 +1.73 note 1: ref. frequency and rating show frequencies available in the serial prom mode. though the frequency is supported in the serial prom mode, the serial prom mode may not be activated correctly due to the frequency difference in the external controller (such as personal computer) and oscillator, and load capacitance of communication pins. note 2: it is recommended that the total frequency difference is within 3% so that auto detection is performed correctly by the reference frequency. note 3: the external controller must transmit the matching data (5ah) repeatedly till the auto detection of baud rate is performed. this number indicates the number of times the matching data is transmitted for each frequency. TMP88F846UG page 195
19.5 operation command the eight commands shown in table 19-6 are used in the serial prom mode. after reset release, the TMP88F846UG waits for the matching data (5ah). table 19-6 operation command in the serial prom mode command data operating mode description 5ah setup matching data. execute this command after releasing the reset. f0h flash memory erasing erases the flash memory area (address 4000h to 05effh, and fff00 to fffffh). 30h flash memory writing writes to the flash memory area (address 4000h to 05effh, and fff00 to fffffh) . 60h ram loader writes to the specified ram area (address 0040h to 10bfh). 90h flash memory sum output outputs the 2-byte checksum upper byte and lower byte in this order for the entire area of the flash memory (address 4000h to 05effh, and fff00 to fffffh). c0h product id code output outputs the product id code (13-byte data). c3h flash memory status output outputs the status code (7-byte data) such as the security program condition. fah flash memory security program setting enables the security program. 19.6 operation mode the serial prom mode has seven types of modes, that are (1) flash memory erasing, (2) flash memory writing, (3) ram loader, (4) flash memory sum output, (5) product id code output, (6) flash memory status output and (7) flash memory security program setting modes. description of each mode is shown below. 1. flash memory erasing mode the flash memory is erased by the chip erase (erasing an entire flash area) or sector erase (erasing sectors in 4-kbyte units). the erased area is filled with ffh. when the security program is enabled, the sector erase in the flash erasing mode can not be performed. to disable the security program, perform the chip erase. before erasing the flash memory, TMP88F846UG checks the passwords except a blank product. if the pass- word is not matched, the flash memory erasing mode is not activated. 2. flash memory writing mode data is written to the specified flash memory address for each byte unit. the external controller must transmit the write data in the intel hex format (binary). if no error is encountered till the end record, TMP88F846UG calculates the checksum for the entire flash memory area (4000h to 05effh, and fff00h to fffffh), and returns the obtained result to the external controller. when the security program is enabled, the flash memory writing mode is not activated. in this case, perform the chip erase command beforehand in the flash memory erasing mode. before activating the flash memory writing mode, TMP88F846UG checks the password except a blank product. if the password is not matched, flash memory writing mode is not activated. 3. ram loader mode the ram loader transfers the data in intel hex format sent from the external controller to the internal ram. when the transfer is completed normally, the ram loader calculates the checksum. after transmitting the results, the ram loader jumps to the ram address specified with the first data record in order to execute the user program. when the security program is enabled, the ram loader mode is not activated. in this case, perform the chip erase beforehand in the flash memory erasing mode. before activating the ram loader mode, TMP88F846UG checks the password except a blank product. if the password is not matched, flash ram loader mode is not activated. 4. flash memory sum output mode the checksum is calculated for the entire flash memory area (4000h to 05effh, and fff00h to fffffh), and the result is returned to the external controller. since the bootrom does not support the operation command to read the flash memory, use this checksum to identify programs when managing revisions of application programs. TMP88F846UG 19. serial prom mode 19.5 operation command page 196
5. product id code output mode the code used to identify the product is output. the code to be output consists of 21-byte data, which includes the information indicating the area of the rom incorporated in the product. the external controller reads this code, and recognizes the product to write. (in the case of TMP88F846UG, the addresses from 4000h to 05effh, and fff00h to fffffh become the rom area.) 6. flash memory status output mode the status of the area from fffe0h to fffffh, and the security program condition are output as 7-byte code. the external controller reads this code to recognize the flash memory status. 7. flash memory security program setting mode this mode disables reading and writing the flash memory data in parallel prom mode. in the serial prom mode, the flash memory writing and ram loader modes are disabled. to disable the flash memory security program, perform the chip erase in the flash memory erasing mode. TMP88F846UG page 197
19.6.1 flash memory erasing mode (operating command: f0h) table 19-7 shows the flash memory erasing mode. table 19-7 flash memory erasing mode transfer byte transfer data from the external controller to TMP88F846UG baud rate transfer data from TMP88F846UG to the external controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: no data transmitted 3rd byte 4th byte baud rate change data (table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (f0h) - modified baud rate modified baud rate - ok: echo back data (f0h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte 8th byte password count storage address bit 23 to 16 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 9th byte 10th byte password count storage address bit 15 to 08 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 11th byte 12th byte password count storage address bit 07 to 00 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 13th byte 14th byte password comparison start address bit 23 to 16 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 15th byte 16th byte password comparison start address bit 15 to 08 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 17th byte 18th byte password comparison start address bit 07 to 00 (note 4, 5) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 19th byte : mth byte password string (note 4, 5) - modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted nth - 2 byte erase area specification (note 2) modified baud rate - nth - 1 byte - modified baud rate ok: checksum (upper byte) (note 3) error: nothing transmitted nth byte - modified baud rate ok: checksum (lower byte) (note 3) error: nothing transmitted nth + 1 byte (wait for the next operation command data) modified baud rate - note 1: xxh 3 indicates that the device enters the halt condition after transmitting 3 bytes of xxh. note 2: refer to "19.13 specifying the erasure area". note 3: refer to "19.8 checksum (sum)". note 4: refer to "19.10 passwords". note 5: do not transmit the password string for a blank product. note 6: when a password error occurs, TMP88F846UG stops uart communication and enters the halt mode. therefore, when a password error occurs, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. note 7: if an error occurs during transfer of a password address or a password string, TMP88F846UG stops uart communication and enters the halt condition. therefore, when a password error occurs, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. TMP88F846UG 19. serial prom mode 19.6 operation mode page 198
description of the flash memory erasing mode 1. the 1st through 4th bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 2. the 5th byte of the received data contains the command data in the flash memory erasing mode (f0h). 3. when the 5th byte of the received data contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, f0h). if the 5th byte of the received data does not contain the operation command data, the device enters the halt condition after sending 3 bytes of the operation command error code (63h). 4. the 7th thorough m'th bytes of the transmitted and received data contain the same data as in the flash memory writing mode. in the case of a blank product, do not transmit a password string. (do not transmit a dummy password string.) 5. the nth - 2 byte contains the erasure area specification data. the upper 4 bits and lower 4 bits specify the start address and end address of the erasure area, respectively. for the detailed description, see "19.13 specifying the erasure area" . 6. the nth - 1 byte and nth byte contain the upper and lower bytes of the checksum, respectively. for how to calculate the checksum, refer to "19.8 checksum (sum)" . checksum is calculated unless a receiving error or intel hex format error occurs. after sending the end record, the external controller judges whether the transmission is completed correctly by receiving the checksum sent by the device. 7. after sending the checksum, the device waits for the next operation command data. TMP88F846UG page 199
19.6.2 flash memory writing mode (operation command: 30h) table 19-8 shows flash memory writing mode process. table 19-8 flash memory writing mode process transfer byte transfer data from external controller to TMP88F846UG baud rate transfer data from TMP88F846UG to ex- ternal controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (see table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (30h) - modified baud rate modified baud rate - ok: echo back data (30h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte 8th byte password count storage address bit 23 to 16 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 9th byte 10th byte password count storage address bit 15 to 08 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 11th byte 12th byte password count storage address bit 07 to 00 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 13th byte 14th byte password comparison start address bit 23 to 16 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 15th byte 16th byte password comparison start address bit 15 to 08 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 17th byte 18th byte password comparison start address bit 07 to 00 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 19th byte : mth byte password string (note 5) - modified baud rate - ok: nothing transmitted error: nothing transmitted mth + 1 byte : nth - 2 byte intel hex format (binary) (note 2) modified baud rate - - nth - 1 byte - modified baud rate ok: sum (upper byte) (note 3) error: nothing transmitted nth byte - modified baud rate ok: sum (lower byte) (note 3) error: nothing transmitted nth + 1 byte (wait state for the next operation com- mand data) modified baud rate - note 1: xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". note 2: refer to "19.9 intel hex format (binary)". note 3: refer to "19.8 checksum (sum)". note 4: refer to "19.10 passwords". note 5: if addresses from fffe0h to fffffh are filled with ffh, the passwords are not compared because the device is considered as a blank product. transmitting a password string is not required. even in the case of a blank product , it is required to specify the password count storage address and the password comparison start address. transmit these data from the external controller. if a password error occurs due to incorrect password count storage address or password TMP88F846UG 19. serial prom mode 19.6 operation mode page 200
comparison start address, TMP88F846UG stops uart communication and enters the halt condition. therefore, when a password error occurs, initialize TMP88F846UG by the reset pin and reactivate the serial rom mode. note 6: if the security program is enabled or a password error occurs, TMP88F846UG stops uart communication and enters the halt confition. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial rom mode. note 7: if an error occurs during the reception of a password address or a password string, TMP88F846UG stops uart com- munication and enters the halt condition. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. note 8: do not write only the address from fffe0h to fffffh when all flash memory data is the same. if only these area are written, the subsequent operation can not be executed due to password error. note 9: to rewrite data to flash memory addresses at which data (including ffh) is already written, make sure to erase the existing data by "sector erase" or "chip erase" before rewriting data. description of the flash memory writing mode 1. the 1st byte of the received data contains the matching data. when the serial prom mode is activated, TMP88F846UG (hereafter called device), waits to receive the matching data (5ah). upon reception of the matching data, the device automatically adjusts the uarts initial baud rate to 9600 bps. 2. when receiving the matching data (5ah), the device transmits an echo back data (5ah) as the second byte data to the external controller. if the device can not recognize the matching data, it does not transmit the echo back data and waits for the matching data again with automatic baud rate adjustment. there- fore, the external controller should transmit the matching data repeatedly till the device transmits an echo back data. the transmission repetition count varies depending on the frequency of device. for details, refer to table 19-5. 3. the 3rd byte of the received data contains the baud rate modification data. the five types of baud rate modification data shown in table 19-4 are available. even if baud rate is not modified, the external controller should transmit the initial baud rate data (28h: 9600 bps). 4. only when the 3rd byte of the received data contains the baud rate modification data corresponding to the device's operating frequency, the device echoes back data the value which is the same data in the 4th byte position of the received data. after the echo back data is transmitted, baud rate modification becomes effective. if the 3rd byte of the received data does not contain the baud rate modification data, the device enters the halts condition after sending 3 bytes of baud rate modification error code (62h). 5. the 5th byte of the received data contains the command data (30h) to write the flash memory. 6. when the 5th byte of the received data contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, 30h). if the 5th byte of the received data does not contain the operation command data, the device enters the halt condition after sending 3 bytes of the operation command error code (63h). 7. the 7th byte contains the data for 23 to 16 bits of the password count storage address. when the data received with the 7th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 8. the 9th byte contains the data for 15 to 8 bits of the password count storage address. when the data received with the 9th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 9. the 11th byte contains the data for 7 to 0 bits of the password count storage address. when the data received with the 11th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 10. the 13th byte contains the data for 23 to 16 bits of the password comparison start address. when the data received with the 13th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 11. the 15th byte contains the data for 15 to 8 bits of the password comparison start address. when the data received with the 15th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 12. the 17th byte contains the data for 7 to 0 bits of the password comparison start address. when the data received with the 17th byte has no receiving error, the device does not send any data. if a receiving error or password error occurs, the device does not send any data and enters the halt condition. 13. the 19th through mth bytes contain the password data. the number of passwords becomes the data (n) stored in the password count storage address. the external password data is compared with n-byte data from the address specified by the password comparison start address. the external controller should TMP88F846UG page 201
send n-byte password data to the device. if the passwords do not match, the device enters the halt condition without returning an error code to the external controller. if the addresses from fffe0h to fffffh are filled with ffh, the passwords are not conpared because the device is considered as a blank product. 14. the mth + 1 through nth - 2 bytes of the received data contain the binary data in the intel hex format. no received data is echoed back to the external controller. after receiving the start mark (3ah for :) in the intel hex format, the device starts data record reception. therefore, the received data except 3ah is ignored until the start mark is received. after receiving the start mark, the device receives the data record, that consists of data length, address, record type, write data and checksum. since the device starts checksum calculation after receiving an end record, the external controller should wait for the checksum after sending the end record. if a receiving error or intel hex format error occurs, the device enters the halts condition without returning an error code to the external controller. 15. the nth - 1 and nth bytes contain the checksum upper and lower bytes. for details on how to calculate the sum, refer to "19.8 checksum (sum)". the checksum is calculated only when the end record is detected and no receiving error or intel hex format error occurs. after sending the end record, the external controller judges whether the transmission is completed correctly by receiving the checksum sent by the device. 16. after transmitting the checksum, the device waits for the next operation command data. TMP88F846UG 19. serial prom mode 19.6 operation mode page 202
19.6.3 ram loader mode (operation command: 60h) table 19-9 shows ram loader mode process. table 19-9 ram loader mode process transfer bytes transfer data from external controller to TMP88F846UG baud rate transfer data from TMP88F846UG to ex- ternal controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (see table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (60h) - modified baud rate modified baud rate - ok: echo back data (60h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte 8th byte password count storage address bit 23 to 16 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 9th byte 10th byte password count storage address bit 15 to 08 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 11th byte 12th byte password count storage address bit 07 to 00 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 13th byte 14th byte password comparison start address bit 23 to 16 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 15th byte 16th byte password comparison start address bit 15 to 08 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 17th byte 18th byte password comparison start address bit 07 to 00 (note 4) modified baud rate - ok: nothing transmitted error: nothing transmitted 19th byte : mth byte password string (note 5) - modified baud rate - ok: nothing transmitted error: nothing transmitted mth + 1 byte : nth - 2 byte intel hex format (binary) (note 2) modified baud rate modified baud rate - - nth - 1 byte - modified baud rate ok: sum (upper byte) (note 3) error: nothing transmitted nth byte - modified baud rate ok: sum (lower byte) (note 3) error: nothing transmitted ram - the program jumps to the start address of ram in which the first transferred data is written. note 1: xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". note 2: refer to "19.9 intel hex format (binary)". note 3: refer to "19.8 checksum (sum)". note 4: refer to "19.10 passwords". note 5: if addresses from fffe0h to fffffh are filled with ffh, the passwords are not compared because the device is considered as a blank product. transmitting a password string is not required. even in the case of a blank product , it is required to specify the password count storage address and the password comparison start address. transmit these data TMP88F846UG page 203
from the external controller. if a password error occurs due to incorrect password count storage address or password comparison start address, TMP88F846UG stops uart communication and enters the halt condition. therefore, when a password error occurs, initialize TMP88F846UG by the reset pin and reactivate the serial rom mode. note 6: after transmitting a password string, the external controller must not transmit only an end record. if receiving an end record after a password string, the device may not operate correctly. note 7: if the security program is enabled or a password error occurs, TMP88F846UG stops uart communication and enters the halt condition. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. note 8: if an error occurs during the reception of a password address or a password string, TMP88F846UG stops uart com- munication and enters the halt condition. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. note 9: to re-write data for the address of flash memory which has already written data ( include "ff" ), make sure to erase the data first by the sector erase or chip erase, and then write new data to the flash memory. description of ram loader mode 1. the 1st through 4th bytes of the transmitted and received data contains the same data as in the flash memory writing mode. 2. in the 5th byte of the received data contains the ram loader command data (60h). 3. when th 5th byte of the received data contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position (in this case, 60h). if the 5th byte does not contain the operation command data, the device enters the halt condition after sending 3 bytes of operation command error code (63h). 4. the 7th through mth bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 5. the mth + 1 through nth - 2 bytes of the received data contain the binary data in the intel hex format. no received data is echoed back to the external controller. after receiving the start mark (3ah for :) in the intel hex format, the device starts data record reception. therefore, the received data except 3ah is ignored until the start mark is received. after receiving the start mark, the device receives the data record, that consists of data length, address, record type, write data and checksum. the writing data of the data record is written into ram specified by address. since the device starts checksum calculation after receiving an end record, the external controller should wait for the checksum after sending the end record. if a receiving error or intel hex format error occurs, the device enters the halts condition without returning an error code to the external controller. 6. the nth - 1 and nth bytes contain the checksum upper and lower bytes. for details on how to calculate the sum, refer to "19.8 checksum (sum)". the checksum is calculated only when the end record is detected and no receiving error or intel hex format error occurs. after sending the end record, the external controller judges whether the transmission is completed correctly by receiving the checksum sent by the device. 7. after transmitting the checksum to the external controller, the boot program jumps to the ram address that is specified by the first received data record. TMP88F846UG 19. serial prom mode 19.6 operation mode page 204
19.6.4 flash memory sum output mode (operation command: 90h) table 19-10 shows flash memory sum output mode process. table 19-10 flash memory sum output process transfer bytes transfer data from external control- ler to TMP88F846UG baud rate transfer data from TMP88F846UG to ex- ternal controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (see table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (90h) - modified baud rate modified baud rate - ok: echo back data (90h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte - modified baud rate ok: sum (upper byte) (note 2) error: nothing transmitted 8th byte - modified baud rate ok: sum (lower byte) (note 2) error: nothing transmitted 9th byte (wait for the next operation command data) modified baud rate - note 1: xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". note 2: refer to "19.8 checksum (sum)". description of the flash memory sum output mode 1. the 1st through 4th bytes of the transmitted and received data contains the same data as in the flash memory writing mode. 2. the 5th byte of the received data contains the command data in the flash memory sum output mode (90h). 3. when the 5th byte of the received data contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, 90h). if the 5th byte of the received data does not contain the operation command data, the device enters the halt condition after transmitting 3 bytes of operation command error code (63h). 4. the 7th and the 8th bytes contain the upper and lower bits of the checksum, respectively. for how to calculate the checksum, refer to "19.8 checksum (sum)". 5. after sending the checksum, the device waits for the next operation command data. TMP88F846UG page 205
19.6.5 product id code output mode (operation command: c0h) table 19-11 shows product id code output mode process. table 19-11 product id code output process transfer bytes transfer data from external controller to TMP88F846UG baud rate transfer data from TMP88F846UG to ex- ternal controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (c0h) - modified baud rate modified baud rate - ok: echo back data (c0h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte modified baud rate 3ah start mark 8th byte modified baud rate 12h the number of transfer data (from 9th to 26th bytes) 9th byte modified baud rate 03h length of address (3 bytes) 10th byte modified baud rate 3dh reserved data 11th byte modified baud rate 00h reserved data 12th byte modified baud rate 00h reserved data 13th byte modified baud rate 00h reserved data 14th byte modified baud rate 02h rom block count (2 block) 15th byte modified baud rate 00h first address of rom block 1 (upper byte) 16th byte modified baud rate 40h first address of rom block 1 (middle byte) 17th byte modified baud rate 00h first address of rom block 1 (lower byte) 18th byte modified baud rate 00h end address of rom block 1 (upper byte) 19th byte modified baud rate 5eh end address of rom block 1 (middle byte) 20th byte modified baud rate ffh end address of rom block 1 (lower byte) 21st byte modified baud rate 0fh first address of rom block 2 (upper byte) 22nd byte modified baud rate ffh first address of rom block 2 (middle byte) 23rd byte modified baud rate 00h first address of rom block 2 (lower byte) 24th byte modified baud rate 0fh end address of rom block 2 (upper byte) 25th byte modified baud rate ffh end address of rom block 2 (middle byte) 26th byte modified baud rate ffh end address of rom block 2 (lower byte) 27th byte modified baud rate 06h checksum of transferred data (9th through 26th byte) 28th byte (wait for the next operation command data) modified baud rate - TMP88F846UG 19. serial prom mode 19.6 operation mode page 206
note:xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". description of product id code output mode 1. the 1st through 4th bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 2. the 5th byte of the received data contains the product id code output mode command data (c0h). 3. when the 5th byte contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, c0h). if the 5th byte data does not contain the operation command data, the device enters the halt condition after sending 3 bytes of operation command error code (63h). 4. the 9th through 26th bytes contain the product id code. for details, refer to "19.11 product id code". 5. after sending the checksum, the device waits for the next operation command data. TMP88F846UG page 207
19.6.6 flash memory status output mode (operation command: c3h) table 19-12 shows flash memory status output mode process. table 19-12 flash memory status output mode process transfer bytes transfer data from external con- troller to TMP88F846UG baud rate transfer data from TMP88F846UG to external controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (see table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (c3h) - modified baud rate modified baud rate - ok: echo back data (c3h) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte modified baud rate 3ah start mark 8th byte modified baud rate 04h byte count (from 9th to 12th byte) 9th byte modified baud rate 00h to 03h status code 1 10th byte modified baud rate 00h reserved data 11th byte modified baud rate 00h reserved data 12th byte modified baud rate 00h reserved data 13th byte modified baud rate checksum 2s complement for the sum of 9th through 12th bytes 9th byte checksum 00h: 00h 01h: ffh 02h: feh 03h: fdh 14th byte (wait for the next operation com- mand data) modified baud rate - note 1: xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". note 2: for the details on status code 1, refer to "19.12 flash memory status code" . description of flash memory status output mode 1. the 1st through 4th bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 2. the 5th byte of the received data contains the flash memory status output mode command data (c3h). 3. when the 5th byte contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, c3h). if the 5th byte does not contain the operation command data, the device enters the halt condition after sending 3 bytes of operation command error code (63h). 4. the 9th through 13th bytes contain the status code. for details on the status code, refer to "19.12 flash memory status code". 5. after sending the status code, the device waits for the next operation command data. TMP88F846UG 19. serial prom mode 19.6 operation mode page 208
19.6.7 flash memory security program setting mode (operation command: fah) table 19-13 shows flash memory security program setting mode process. table 19-13 flash memory security program setting mode process transfer bytes transfer data from external control- ler to TMP88F846UG baud rate transfer data from TMP88F846UG to exter- nal controller boot rom 1st byte 2nd byte matching data (5ah) - 9600 bps 9600 bps - (automatic baud rate adjustment) ok: echo back data (5ah) error: nothing transmitted 3rd byte 4th byte baud rate modification data (see table 19-4) - 9600 bps 9600 bps - ok: echo back data error: a1h 3, a3h 3, 62h 3 (note 1) 5th byte 6th byte operation command data (fah) - modified baud rate modified baud rate - ok: echo back data (fah) error: a1h 3, a3h 3, 63h 3 (note 1) 7th byte 8th byte password count storage address 23 to 16 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 9th byte 10th byte password count storage address 15 to 08 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 11th byte 12th byte password count storage address 07 to 00 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 13th byte 14th byte password comparison start address 23 to 16 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 15th byte 16th byte password comparison start address 15 to 08 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 17th byte 18th byte password comparison start address 07 to 00 (note 2) modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted 19th byte : mth byte password string (note 2) - modified baud rate modified baud rate - ok: nothing transmitted error: nothing transmitted nth byte - modified baud rate ok: fbh (note 3) error: nothing transmitted n+1th byte (wait for the next operation com- mand data) modified baud rate - note 1: xxh 3 indicates that the device enters the halt condition after sending 3 bytes of xxh. for details, refer to "19.7 error code". note 2: refer to "19.10 passwords". note 3: if the security program is enabled for a blank product or a password error occurs for a non-blank product, TMP88F846UG stops uart communication and enters the halt mode. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. note 4: if an error occurs during reception of a password address or a password string, TMP88F846UG stops uart communi- cation and enters the halt mode. in this case, initialize TMP88F846UG by the reset pin and reactivate the serial prom mode. TMP88F846UG page 209
description of the flash memory security program setting mode 1. the 1st through 4th bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 2. the 5th byte of the received data contains the command data in the flash memory status output mode (fah). 3. when the 5th byte of the received data contains the operation command data shown in table 19-6, the device echoes back the value which is the same data in the 6th byte position of the received data (in this case, fah). if the 5th byte does not contain the operation command data, the device enters the halt condition after transmitting 3 bytes of operation command error code (63h). 4. the 7th through mth bytes of the transmitted and received data contain the same data as in the flash memory writing mode. 5. the n'th byte contains the status to be transmitted to the external controller in the case of the successful security program. TMP88F846UG 19. serial prom mode 19.6 operation mode page 210
19.7 error code when detecting an error, the device transmits the error code to the external controller, as shown in table 19-14. table 19-14 error code transmit data meaning of error data 62h, 62h, 62h baud rate modification error. 63h, 63h, 63h operation command error. a1h, a1h, a1h framing error in the received data. a3h, a3h, a3h overrun error in the received data. note:if a password error occurs, TMP88F846UG does not transmit an error code. 19.8 checksum (sum) 19.8.1 calculation method the checksum (sum) is calculated with the sum of all bytes, and the obtained result is returned as a word. the data is read for each byte unit and the calculated result is returned as a word. example: a1h if the data to be calculated consists of the four bytes, the checksum of the data is as shown below. b2h a1h + b2h + c3h + d4h = 02eah sum (high)= 02h sum (low)= eah c3h d4h the checksum which is transmitted by executing the flash memory write command, ram loader command, or flash memory sum output command is calculated in the manner, as shown above. 19.8.2 calculation data the data used to calculate the checksum is listed in table 19-15. TMP88F846UG page 211
table 19-15 checksum calculation data operating mode calculation data description flash memory writing mode data in the entire area of the flash memory even when a part of the flash memory is written, the checksum of the entire flash memory area (04000h to 05effh, and fff00h to fffffh) is calculated. the data length, address, record type and checksum in intel hex format are not included in the checksum. flash memory sum output mode ram loader mode ram data written in the first received ram ad- dress through the last received ram address the length of data, address, record type and checksum in intel hex format are not included in the checksum. product id code output mode 9th through 18th bytes of the transferred data for details, refer to "19.11 product id code". flash memory status output mode 9th through 12th bytes of the transferred data for details, refer to "19.12 flash memory status code" flash memory erasing mode all data in the erased area of the flash memory (the whole or part of the flash memory) when the sector erase is executed, only the erased area is used to calculate the checksum. in the case of the chip erase, an entire area of the flash memory is used. TMP88F846UG 19. serial prom mode 19.8 checksum (sum) page 212
19.9 intel hex format (binary) 1. after receiving the checksum of a data record, the device waits for the start mark (3ah :) of the next data record. after receiving the checksum of a data record, the device ignores the data except 3ah transmitted by the external controller. 2. after transmitting the checksum of end record, the external controller must transmit nothing, and wait for the 2-byte receive data (upper and lower bytes of the checksum). 3. if a receiving error or intel hex format error occurs, the device enters the halt condition without returning an error code to the external controller. the intel hex format error occurs in the following case: - when the record type is not 00h, 01h, or 02h - when a checksum error occurs - when the data length of an extended record (record type = 02h) is not 02h - when the data length of the end record (record type = 01h) is not 00h 19.10 passwords the consecutive eight or more-byte data in the flash memory area can be specified to the password. TMP88F846UG compares the data string specified to the password with the password string transmitted from the external controller. the area in which passwords can be specified is located at addresses 04000h to 05effh. the area from fff00h to fffffh can not be specified as the passwords area. if addresses from fffe0h through fffffh are filled with ffh, the passwords are not compared because the product is considered as a blank product. even in this case, the password count storage addresses and password comparison start address must be specified. table 19-16 shows the password setting in the blank product and non- blank product. table 19-16 password setting in the blank product and non-blank product password blank product (note 1) non-blank product pnsa (password count storage address) 04000h pnsa 05effh 04000h pnsa 05effh pcsa (password comparison start address) 04000h pcsa 05effh 04000h pcsa 05f00h - n n (password count) * 8 n password string setting not required (note 5) required (note 2) note 1: when addresses from fffe0h through fffffh are filled with ffh, the product is recognized as a blank product. note 2: the data including the same consecutive data (three or more bytes) can not be used as a password. (this causes a password error data. TMP88F846UG transmits no data and enters the halt condition.) note 3: *: dont care. note 4: when the above condition is not met, a password error occurs. if a password error occurs, the device enters the halt condition without returning the error code. note 5: in the flash memory writing mode or ram loader mode, the blank product receives the intel hex format data immediately after receiving pcsa without receiving password strings. in this case, the subsequent processing is performed correctly because the blank product ignores the data except the start mark (3ah :) as the intel hex format data, even if the external controller transmits the dummy password string. however, if the dummy password string contains 3ah, it is detected as the start mark erroneously. the microcontroller enters the halt mode. if this causes the problem, do not transmit the dummy password strings. note 6: in the flash memory erasing mode, the external controller must not transmit the password string for the blank product. TMP88F846UG page 213
figure 19-5 password comparison 19.10.1 password string the password string transmitted from the external controller is compared with the specified data in the flash memory. when the password string is not matched to the data in the flash memory, the device enters the halt condition due to the password error. 19.10.2 handling of password error if a password error occurs, the device enters the halt condition. in this case, reset the device to reactivate the serial prom mode. 19.10.3 password management during program development if a program is modified many times in the development stage, confusion may arise as to the password. there- fore, it is recommended to use a fixed password in the program development stage. example :specify pnsa to f000h, and the password string to 8 bytes from address f001h (pcsa becomes f001h.) password section code abs = 0f000h db 08h : pnsa definition db code1234 : password string definition TMP88F846UG 19. serial prom mode 19.10 passwords page 214 08h 01h 02h 03h 04h 05h 08h f012h f107h f108h flash memory f109h f10ah f10bh f10ch uart f0h 12h f1h 07h 01h 02h 03h 04h 05h 06h 07h 08h pnsa pcsa password string 06h 07h f10dh f10eh "08h" becomes the umber of passwords 8 bytes compare example pnsa = f012h pcsa = f107h password string = 01h,02h,03h,04h,05h 06h,07h,08h rxd pin
19.11 product id code the product id code is the 21-byte data containing the start address and the end address of rom. table 19-17 shows the product id code format. table 19-17 product id code format data description in the case of TMP88F846UG 1st start mark (3ah) 3ah 2nd the number of transfer data (18 bytes from 3rd to 20th byte) 12h 3rd address length (3 bytes) 03h 4th reserved data 3dh 5th reserved data 00h 6th reserved data 00h 7th reserved data 00h 8th rom block count 02h 9th the first address of rom block 1 (upper byte) 00h 10th the first address of rom block 1 (middle byte) 40h 11th the first address of rom block 1 (lower byte) 00h 12th the end address of rom block 1 (upper byte) 00h 13th the end address of rom block 1 (middle byte) 5eh 14th the end address of rom block 1 (lower byte) ffh 15th the first address of rom block 2 (upper byte) 0fh 16th the first address of rom block 2 (middle byte) ffh 17th the first address of rom block 2 (lower byte) 00h 18th the end address of rom block 2 (upper byte) 0fh 19th the end address of rom block 2 (middle byte) ffh 20th the end address of rom block 2 (lower byte) ffh 21th checksum of the transferred data (2s compliment for the sum of 3rd through 20th bytes) 06h 19.12 flash memory status code the flash memory status code is the 7-byte data including the security program status and the status of the data from fffe0h to fffffh. table 19-18 shows the flash memory status code. table 19-18 flash memory status code data description in the case of TMP88F846UG 1st start mark 3ah 2nd transferred data count (3rd through 6th byte) 04h 3rd status code 00h to 03h (see figure below) 4th reserved data 00h 5th reserved data 00h 6th reserved data 00h 7th checksum of the transferred data (2s compliment for the sum of 3rd through 6th data) 3rd byte 00h 01h 02h 03h checksum 00h ffh feh fdh TMP88F846UG page 215
status code 1 7 6 5 4 3 2 1 0 rpena blank (initial value: 0000 00**) rpena flash memory read se- curity program status 0: 1: security program is disabled. security program is enabled. blank the status from fffe0h to fffffh. 0: 1: all data is ffh in the area from fffe0h to fffffh. the value except ffh is included in the area from fffe0h to fffffh. some operation commands are limited by the flash memory status code 1. if the security program is enabled, flash memory writing mode command and ram loader mode command can not be executed. erase all flash memory before executing these command. rpena blank flash memory writing mode ram loader mode flash memory sum output mode product id code output mode flash memory status output mode flash memory erasing mode security pro- gram setting mode 0 0 o o o o o o 0 1 pass pass o o o pass pass 1 0 o o o o 1 1 o o o pass pass note:o : the command can be executed. pass : the command can be executed with a password. : the command can not be executed. (after echoing the command back to the external controller, TMP88F846UG stops uart communication and enters the halt condition.) TMP88F846UG 19. serial prom mode 19.12 flash memory status code page 216
19.13 specifying the erasure area in the flash memory erasing mode, the erasure area of the flash memory is specified by n?2 byte data. the address of an erasure area is specified by erarea. the sector erase (flash memory erasing every 4k bytes) is performed if the address data from "00h" to "1dh" is specified by erarea. the chip erase (all flash memory erasing) is performed if the address data from "c0h" to "ffh" is specified by erarea. at the same time, the security program for flash memory is also disabled. therefore, make sure to execute the chip erase (not sector erase) to disable the security program for flash memory. executing the sector erase while the security program is enabled results in an infinite loop. erasure area specification data (n?2 byte data) 7 6 5 4 3 2 1 0 erasta erarea select the erase area 00h: sector 0 erase 01h: sector 1 erase c0h: chip erase : : ffh: chip erase note 1: when the sector erase is executed for the area containing no flash cell, TMP88F846UG stops the uart communi cation and enters the halt condition. note 2: executing the sector erase while the security program is enabled results in an infinite loop. TMP88F846UG page 217 sector 0 sector 1 sector 1 0 z 04000 0 z 04fff 0 z 05000 0x05eff 0xfff00 0xfffff sector 0 is erased only on erarea = "00h". sector 1 is erased only on erarea = "01h". all memory (all sector) are erased on erarea = "c0h" to "ffh".
19.14 port input control register in the serial prom mode, the input level is fixed to the all ports except p45 and p44 ports with a hardware feature to prevent overlap current to unused ports. (all port inputs and peripheral function inputs shared with the ports become invalid.) therefore, to access to the flash memory in the ram loader mode without uart communication, port inputs must be valid. to make port inputs valid, set the pin of the port input control register (spcr) to 1. the spcr register is not operated in the mcu mode. port input control register spcr (01ffeh) 7 6 5 4 3 2 1 0 pin (initial value: **** ***0) pin port input control in the serial prom mode 0 : invalid port inputs (the input level is fixed with a hardware feature.) 1 : valid port inputs r/w note 1: the spcr register can be read or written only in the serial prom mode. when the write instruction is executed to the spcr register in the mcu mode, the port input control can not be performed. when the read instruction is executed for the spcr register in the mcu mode, read data of bit7 to 1 are unstable. note 2: all i/o ports except p45 and p44 ports are controlled by the spcr register. TMP88F846UG 19. serial prom mode 19.14 port input control register page 218
19.15 flowchart TMP88F846UG page 219 start setup receive uart data receive data = 5ah adjust the baud rate (adjust the source clock to 9600 bps) no yes transmit uart data (transmit data = 5ah) receive uart data modify the baud rate based on the receive data receive data = 30h (flash memory writing mode) receive data = 60h (ram loader mode) receive uart data (intel hex format) transmit uart data (checksum of an entire area) receive uart data transmit uart data (transmit data = 60h) receive uart data (intel hex format) jump to the start address of ram program transmit uart data (checksum of an entire area) receive data = c0h (product id code output mode) transmit uart data (transmit data = c0h) flash memory write process ram write process transmit uart data (product id code) transmit uart data (echo back the baud rate modification data) verify the password (compare the receive data and flash memory data) security program check security program disabled security program check infinite loop infinite loop ng ng receive data = c3h (flash memory status output mode) transmit uart data (transmit data = c3h) receive data = f0h (flash memory erasing mode) transmit uart data (transmit data = f0h) infinite loop ng chip erase (erase on entire area) transmit uart data (checksum of an entire area) receive data = fah (security program setting mode) transmit uart data (transmit data = fah) security program setting security program check blank product check infinite loop ng blank product check blank product check non-blank product non-blank product ok blank product ok blank product check non-blank product ok ok blank product check non-blank product blank product security program enabled blank product disable read protection blank product receive uart data receive data sector erase (block erase) upper 4 bits x 1000h to lower 4 bits x 1000h transmit uart data (checksum of the erased area) upper 4 bits > lower 4 bits transmit uart data (transmit data = 30h) transmit uart data (transmit data = 90h) receive data = 90h (flash memory sum output mode) verify the password (compare the receive data and flash memory data) transmit uart data (checksum) verify the password (compare the receive data and flash memory data) verify the password (compare the receive data and flash memory data) transmit uart data (status of the security program and blank product) transmit uart data (transmit data = fbh) security program check upper 4 bits < lower 4 bits infinite loop :w security program disabled security program enabled security program disabled security program enabled
19.16 uart timing table 19-19 uart timing-1 (vdd = 4.5 to 5.5 v, fc = 20 mhz, topr = -10 to 40?c) parameter symbol clock frequency (fc) minimum required time at fc = 20 mhz time from matching data reception to the echo back cmeb1 approx. 930 46.5 s time from baud rate modification data reception to the echo back cmeb2 approx. 980 49.0 s time from operation command reception to the echo back cmeb3 approx. 800 40 s checksum calculation time cksm approx. 7864500 0.39 s erasure time of an entire flash memory ceall - 30 ms erasure time for a sector of a flash memory (in 4-kbyte units) cesec - 15 ms table 19-20 uart timing-2 (vdd = 4.5 to 5.5 v, fc = 20 mhz, topr = -10 to 40?c) parameter symbol clock frequency (fc) minimum re- quired time at fc = 20 mhz time from the reset release to the acceptance of start bit of rxd pin rxsup 2100 105.0 ms matching data transmission interval cmtr1 28500 1.43 ms time from the echo back of matching data to the acceptance of baud rate modification data cmtr2 380 19.0 s time from the echo back of baud rate modification data to the acceptance of an operation command cmtr3 650 32.5 s time from the echo back of operation command to the acceptance of pass- word count storage addresses (upper byte) cmtr4 800 40 s TMP88F846UG 19. serial prom mode 19.16 uart timing page 220 reset pin rxd pin rxsup (5ah) cmeb1 (5ah) cmtr2 (28h) (28h) cmeb2 cmtr3 (30h) (30h) cmeb3 cmtr4 txd pin rxd pin txd pin (5ah) (5ah) (5ah) cmtr1
20. input/output circuitry 20.1 control pins the input/output circuitries of the TMP88F846UG control pins are shown below. control pin i/o input/output circuitry remark reset input hysteresis input pull-up resistor included r in = 220 k (typ.) test input without pull-down resistor fix the test pin at l level in mcu mode. TMP88F846UG page 221  
20.2 input/output ports port i/o input/output circuit remark p3 p4 i/o three-state output programmable open-drain p3, p4: large-current port hysteresis input p6 i/o three-state output p1 i/o three-state output hysteresis input p2 i/o open-drain output hysteresis input 20.3 nc pins port i/o input/output circuit remark lqfp44 nc pins 2 pin, 3 pin 43 pin 44 pin nc nc pins note:the nc pins of tmp88ph41ug does not have a protect diode. TMP88F846UG 20. input/output circuitry 20.2 input/output ports page 222 initial "high-z" disable data output pin input initial "high-z" data output pin input initial "high-z" disable data output pin input initial "high-z" disable output control data output pin input
21. electrical characteristics 21.1 absolute maximum ratings the absolute maximum ratings stipulate the standards, any parameter of which cannot be exceeded even in an instant. if the device is used under conditions exceeding the absolute maximum ratings, it may break down or degrade, causing injury due to rupture or burning. therefore, always make sure the absolute maximum ratings will not be exceeded when designing your application equipment. (v ss = 0 v) parameter symbol pins standard unit remarks power supply voltage v dd ?0.3 to 6.0 v input voltage v in ?0.3 to v dd + 0.3 output voltage v out ?0.3 to v dd + 0.3 output current i oh p1, p3, p4, p6 ?1.8 ma i ol1 p1, p2, p6 3.2 i ol2 p3, p4 30 mean output current i out1 p1, p2, p6 60 total of all ports except large-current ports i out2 p3 60 total of 8 pins of large-current ports p30 to 7 i out3 p4 60 total of 8 pins of large-current ports p40 to 7 power dissipation p d TMP88F846UG 350 mw lqfp soldering temperature (time) tsld 260 (10 s) c operating temperature topr ?40 to 85 storage temperature tstg ?55 to 125 TMP88F846UG page 223
21.2 operating conditions the operating conditions show the conditions under which the device be used in order for it to operate normally while maintaining its quality. if the device is used outside the range of operating conditions (power supply voltage, operating temperature range, or ac/dc rated values), it may operate erratically. therefore, when designing your application equipment, always make sure its intended working conditions will not exceed the range of operating conditions. 21.2.1 mcu mode (flash programming or erasing) (v ss = 0 v, topr = ?10 to 40c) parameter symbol pins ratings min typ max unit supply voltage v dd normal mode 4.5 5.0 5.5 v input high level v ih1 normal input (p6) v dd 4.5 v v dd 0.70 ? v dd v ih2 hysteresis input (p1, p2, p3, p4, reset) v dd 0.75 ? input low level v il1 normal input (p6) v dd 4.5 v 0 ? v dd 0.30 v il2 hysteresis input (p1, p2, p3, p4, reset) v dd 0.25 clock frequency fc v dd = 4.5 v to 5.5 v ? 20.0 ? mhz 21.2.2 mcu mode (except flash programming or erasing) (v ss = 0 v, topr = -40 to 85c) parameter symbol pins ratings min typ max unit supply voltage v dd fc=20mhz normal / idle modes 4.5 5.0 5.5 v stop mode input high level v ih1 normal input (p6) v dd 4.5 v v dd 0.70 ? v dd v ih2 hysteresis input (p1,p2,p3,p4, reset) v dd 0.75 ? input low level v il1 normal input (p6) v dd 4.5 v 0 ? v dd 0.30 v il2 hysteresis input (p1,p2,p3,p4, reset) v dd 0.25 clock frequency fc v dd = 4.5 to 5.5 v ? 20.0 ? mhz TMP88F846UG 21. electrical characteristics 21.2 operating conditions page 224
21.2.3 serial prom mode (v ss = 0 v, topr = -10 to 85c) parameter symbol pins ratings min typ max unit supply voltage v dd normal mode 4.5 5.0 5.5 v input high level v ih1 normal input (p6) v dd 4.5 v v dd 0.70 ? v dd v ih2 hysteresis input (p1,p2,p3,p4, reset) v dd 0.75 ? input low level v il1 normal input (p6) v dd 4.5 v 0 ? v dd 0.30 v il2 hysteresis input (p1,p2,p3,p4, reset) v dd 0.25 clock frequency fc v dd = 4.5 to 5.5 v ? 20.0 ? mhz 21.3 dc characteristics (v ss = 0 v, topr = ?40 to 85c) parameter symbol pins condition min typ. max unit input current i in1 test v dd = 5.5 v, v in = 5.5 v/0 v - - 2 a i in2 sink open drain, three- state i in3 reset, stop input resistance r in2 reset 90 220 510 k output leakage current i lo sink open drain, three- state v dd = 5.5 v, v in = 5.5 v/0 v - - 2 a high level output voltage v oh three-state port v dd = 4.5 v, i oh = ?0.7 ma 4.1 - - v low level output current i ol1 p0, p1, p2, p6 v dd = 4.5 v, v ol = 0.4 v 1.6 - - ma i ol2 p3, p4 v dd = 4.5 v, v ol = 1.0 v - 20 - normal mode power supply current i dd v dd = 5.5 v v in = 5.3 v/0.2 v fc = 20 mhz when a program oper- ates on flash memory (note4,5) - 22.0 38.0 ma idle mode power supply current - 20 35 stop mode power supply current - 2 100 a peak current of inter- mittent operation (note4,5) i ddp-p v dd = 5.5 v - 10.0 - ma note 1: typical values show those at topr = 25c, vdd = 5v. note 2: input current (i in3 ); the current through pull-up or pull-down resistor is not included. note 3: i dd does not include i ref current. note 4: when a program is executing in the flash memory or when data is being read from the flash memory, the flash memory operates in an intermittent manner, causing peak currents in the operation current, as shown in figure 21-1. in this case, the supply current i dd (in normal mode) is defined as the sum of the average peak current and mcu current. note 5: when designing the power supply, make sure that peak currents can be supplied. TMP88F846UG page 225
figure 21-1 intermittent operation of flash memory 21.4 on-chip oscillator characteristics (topr = ?40 to 85c) parameter symbol condition min typ max unit normal oscillation frequency f nom v dd = 5.0v, topr = 25c 19.8 20 20.2 mhz frequency deviation f with respect to f nom v dd = 5.0v, topr = ?40 to 10c -4 - +4 % with respect to f nom v dd = 5.0v, topr = ?10 to 85c -4 - +4 % 21.5 ad conversion characteristics (topr = ?40 to 85c) parameter symbol condition min typ max unit 8 bit 10 bit analog reference voltage v aref v ss = 0 v, av dd = v dd v dd ?1.0 - v dd v analog input voltage range v ain av ss - v aref v analog reference power supply current i ref v dd = av dd = v aref = 5.0 v v ss = av ss = 0 v - 0.5 1.0 ma nonlinearity error v dd = 5 v , v ss = 0 v av dd = v aref = 5 v av ss = 0 v - - 1 2 lsb zero error - - 1 2 full scale error - - 1 2 overall error - - 2 4 note 1: the total error includes all errors except a quantization error, and is defined as a maximum deviation from the idea con- version line. note 2: conversion time is different in recommended value by power supply voltage. about conversion time, please refer to "register configuration" in the section of ad converter. note 3: please use input voltage to ain input pin in limit of v aref - v ss . when voltage or range outside is input, conversion value becomes unsettled and gives affect to other channel conversion value. note 4: analog reference voltage range; v aref = v aref - v ss note 5: when ad converter is not used, fix the av dd pin and v aref pin on the v dd level. TMP88F846UG 21. electrical characteristics 21.4 on-chip oscillator characteristics page 226 n program coutner (pc) n+1 n+2 n+3 1 machine cycle (4/fc or 4/fs) mcu current i [ma] ddp-p typ. current momentary flash current max. current sum of average momentary flash current and mcu current
21.6 power on reset circuit (por) figure 21-2 operation of the power-on reset circuit note:the power-on reset circuit may not operate properly depending on transitions in supply voltage (vdd). when designing your application system, careful consideration must be given to ensure proper operation of the power- on reset circuit by referring to the device's electrical characteristics. (v ss = 0 v, topr = ?40 to 85c) symbol parameter min typ max unit v proff power-on reset release voltage 2.2 2.4 2.6 v v pron power-on reset detection voltage 2.0 2.2 2.3 t proff power-on reset release response time - 0.01 0.1 ms t pron power-on reset generation response time - 0.01 0.1 t prw power-on reset minimum pulse width 1.0 - - t pwup warming-up time after releasing reset 14.0 - 30.0 t vdd power supply raising time - - 7 note 1: because the power-on reset releasing voltage and the power-on reset detecting voltage change relative to one another, the detected voltage will never become inverted. note 2: the input clock to the warm-up counter is derived from the oscillation circuit. because the oscillation frequency is unstable until the oscillation circuit stabilizes, the warm-up time includes error. note 3: the supply voltage must be raised to satisfy the condition t vdd < t pwup . TMP88F846UG page 227 warm-up counter start  t pwup t vdd t proff t pron t prw v proff supply operating voltage 
v dd v pron power-on reset signal warm-up counter clock ? cpu/peripheral circuits reset signal  
21.7 voltage detection circuit (vltd) figure 21-3 operation timing of voltage detection circuit note:the voltage detection circuit may not operate properly depending on transitions in supply voltage (vdd). when designing your application system, careful consideration must be given to ensure proper operation of the voltage detection circuit by referring to the device's electrical characteristics. (v ss = 0 v, topr = ?40 to 85c) symbol parameter min typ max unit t vltoff voltage detection release response time - 0.01 0.1 ms t vlton voltage detection response time - 0.01 0.1 ms t vltpw voltage detection minimum pulse width 1.0 - - ms 21.8 ac characteristics (v ss = 0 v, v dd = 4.5 to 5.5 v, topr = ?40 to 85c) parameter symbol condition min typ max unit machine cycle time tcy during normal mode 0.2 - 0.5 s during idle mode 21.9 flash characteristics write characteristics (v ss = 0 v, 4.5 v v dd 5.5 v) parameter condition min typ max unit number of guaranteed writes to flash memory topr = -10 to 40c - - 100 times note:to rewrite data to flash memory addresses at which data is already written, make sure to erase the existing data before rewriting data. TMP88F846UG 21. electrical characteristics 21.7 voltage detection circuit (vltd) page 228 detection voltage level operating voltage voltage detection interrupt reset signal v oltage detection reset signal t vltoff t vltpw t vlton power supply voltage (v dd )
21.10 handling precaution - the solderability test conditions are shown below. 1. when using the sn-37pb solder bath solder bath temperature = 230 c dipping time = 5 seconds number of times = once r-type flux used 2. when using the sn-3.0ag-0.5cu solder bath solder bath temperature = 245 c dipping time = 5 seconds number of times = once r-type flux used note: the pass criterion of the above test is as follows: solderability rate until forming 95% - when using the device (oscillator) in places exposed to high electric fields such as cathode-ray tubes, we recommend electrically shielding the package in order to maintain normal operating condition. TMP88F846UG page 229
TMP88F846UG 21. electrical characteristics 21.10 handling precaution page 230
22. package dimensions TMP88F846UG page 231 0.37 12.0 0.2 10.0 0.2 12.0 0.2 10.0 0.2 0.6 0.15 0.25 0.145 0.055 0.1 1.6max 0.05 1.4 0.05 0.08 0.07 0.2 0.8 1.0typ lqfp44-p-1010-0.80b rev 01 unit: mm
TMP88F846UG 22. package dimensions page 232
restrictions on product use ? toshiba corporation, and its subsidiaries and affiliates (collectively ?toshiba?), reserve the right to make changes to the in formation in this document, and related hardware, software and systems (collectively ?product?) without notice. ? this document and any information herein may not be reproduced without prior written permission from toshiba. even with toshiba?s written permission, reproduction is permissible only if reproduction is without alteration/omission. ? though toshiba works continually to improve product?s quality and reliability, product can malfunction or fail. customers are responsible for complying with safety standards and for providing adequate designs and safeguards for their hardware, software and systems which minimize risk and avoid situations in which a malfunction or failure of product could cause loss of human life, b odily injury or damage to property, including data loss or corruption. before customers use the product, create designs including the product, or incorporate the product into their own applications, customers must also refer to and comply with (a) the latest versions of all relevant toshiba information, including without limitation, this document, the specifications, the data sheets and application notes for product and the precautions and conditions set forth in the ?toshiba semiconductor reliability handbook? and (b) the instructio ns for the application that product will be used with or for. customers are solely responsible for all aspects of their own product de sign or applications, including but not limited to (a) determining the appropriateness of the use of this product in such design or app lications; (b) evaluating and determining the applicability of any information contained in this document, or in charts, diagrams, program s, algorithms, sample application circuits, or any other referenced documents; and (c) validating all operating parameters for suc h designs and applications. toshiba assumes no liability for customers? product design or applications. ? product is intended for use in general electronics applications (e.g., computers, personal equipment, office equipment, measur ing equipment, industrial robots and home electronics appliances) or for specific applications as expressly stated in this document . product is neither intended nor warranted for use in equipment or systems that require extraordinarily high levels of quality a nd/or reliability and/or a malfunction or failure of which may cause lo ss of human life, bodily injury, serious property damage or se rious public impact (?unintended use?). unintended use includes, without limitation, equipment used in nuclear facilities, equipment used in the aerospace industry, medical equipment, equipment used for automobiles, trains, ships and other transportation, traffic signalin g equipment, equipment used to control combustions or explosions, safety devices, elevators and escalators, devices related to el ectric power, and equipment used in finance-related fields. do not use product for unintended use unless specifically permitted in thi s document. ? do not disassemble, analyze, reverse-engineer, alter, modify, translate or copy product, whether in whole or in part. ? product shall not be used for or incorporated into any products or systems whose manufacture, use, or sale is prohibited under any applicable laws or regulations. ? the information contained herein is pres ented only as guidance for product use. no responsibility is assumed by toshiba for an y infringement of patents or any other intellectual property rights of third parties that may result from the use of product. no license to any intellectual property right is granted by this document, whether express or implied, by estoppel or otherwise. ? absent a written signed agreement, except as provided in the relevant terms and conditions of sale for product, and to the maximum extent allowable by law, toshiba (1) assumes no liability whatsoever, including without limitation, indirect, consequential, special, or incidental damages or loss, including without limitation, loss of profits, loss of opportunities, business interruption and loss of data, and (2) disclaims any and all express or implied warranties and conditions related to sale, use of product, or information, including warranties or conditions of merchantability, fitness for a particular purpose, accuracy of information, or noninfringement. ? do not use or otherwise make available product or related software or technology for any military purposes, including without limitation, for the design, development, use, stockpiling or manufacturing of nuclear, chemical, or biological weapons or missile technolog y products (mass destruction weapons). product and related software and technology may be controlled under the japanese foreign exchange and foreign trade law and the u.s. export administration regulations. export and re-export of product or related softw are or technology are strictly prohibited except in compliance with all applicable export laws and regulations. ? please contact your toshiba sales representative for details as to environmental matters such as the rohs compatibility of pro duct. please use product in compliance with all applicable laws and regulations that regulate the inclusion or use of controlled subs tances, including without limitation, the eu rohs directive. toshiba assumes no liability for damages or losses occurring as a result o f noncompliance with applicable laws and regulations.


▲Up To Search▲   

 
Price & Availability of TMP88F846UG

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X